我在Ember/Angular/Backbone应用程序中从cookie转向基于 token 的身份验证时遇到了麻烦。
缺点是无法在img标签上设置请求 header 。
有人建议将 token 参数附加到请求的末尾,从而使带有身份验证 token 的服务器日志乱丢。
使用基于 token 的身份验证访问 protected 嵌入式 Assets 的正确方法是(如果有的话)?
最佳答案
重要警告:我不是安全专家(但我涉猎)
过去,我将Amazon S3及其基于 token 的安全性用于 Assets 。这些允许您生成私有(private)甚至是临时URL进行 Assets 访问。您还可以在自己的服务器上实现类似的机制,但是请记住,您现在将自己托管和服务 Assets ,因此请记住带宽使用,缓存等问题。
This post似乎有关于使用AngularJS和Amazon保护图像的相当详细的教程。
如果您不想走亚马逊路线,则需要自己实现某种 token /安全方案,并且可以采用多种方法。这将在很大程度上取决于您想要的安全级别。
https://host/secure_images/{tokenized_access_url}.jpg
)的自定义实现。就像S3一样。您甚至可以使此 token 在一段时间后过期。 根据您的需求,您可能会发现其中一些技术会损害您利用缓存的能力。因此,就安全性和效率而言,使用S3/Cloudfront可能是最佳选择。
您还应该问的是,是否需要保护这些 Assets 以防止URL泄露。在许多情况下,只需将 Assets url保持私有(private)(在某个地方使用随机生成的值),然后仅将其显示给有访问权限的用户即可,这是一个足够的解决方案。
关于angularjs - 如何使用基于 token 的身份验证来内联访问 protected Assets ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23375518/