我有一个用angularjs和dropwizard后端编写的应用程序。除文件下载外,所有API调用都是ajax,这是通过执行重定向到标准GET请求来完成的。所有API调用都通过作为令牌标头传递的令牌来保护。我们对所有API使用SSL。下载GET请求有效,但是我很难确定如何保护它。我无法设置自定义标头,这是传递令牌所必需的。因此,从理论上讲,我有两个选择,显然没有一个是可以接受的:1.将令牌作为GET参数之一传递。2.使下载不安全。任何想法如何保护文件下载?
在URL查询参数中放入秘密令牌并不好,因为URL易于泄漏,例如通过历史记录/日志记录/引荐来源网址。有多种方法可以减轻这种情况:例如,您可以让服务器端发布仅适合一次使用或有限时间的下载令牌。或者,客户端可以在服务器端可以验证的秘密令牌上传递使用签名创建的限时令牌。
或者,您可以仅针对此接口(例如,路径受限,终止过期)将令牌放入cookie。
另一种方法是通过AJAX下载整个文件,从而使您可以正常设置标题。然后,您必须将内容呈现为可下载的本地资源,这需要大量针对特定浏览器的黑客行为(例如,使用data:或filesystem:URL,并可能带有该download
属性的链接)。考虑到复杂性,通常不值得为此烦恼,特别是如果文件很大时,可能会带来更多的存储限制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句