【问题标题】:How to secure file download?如何保护文件下载?
【发布时间】:2016-03-27 20:14:50
【问题描述】:

我有一个用 angularjs 和 dropwizard 后端编写的应用程序。所有 API 调用都是 ajax,除了文件下载,这是通过执行重定向到标准 GET 请求来完成的。 所有 API 调用都通过作为 Token 标头传递的令牌进行保护。我们对所有 API 使用 SSL。 下载 GET 请求有效,但我很难弄清楚如何保护它。我无法设置自定义标头,这是传递令牌所必需的。所以理论上,我有两个选择,显然它们都不可接受: 1. 将令牌作为 GET 参数之一传递 2. 让下载不安全。 任何想法如何保护文件下载?

【问题讨论】:

    标签: angularjs file security download


    【解决方案1】:

    在 URL 查询参数中放置一个秘密令牌并不好,因为 URL 往往是可泄漏的,例如通过历史/日志记录/引荐来源网址。有一些方法可以缓解这种情况:例如,您可以让服务器端发布一个下载令牌,该令牌仅适用于一次使用或有限的时间。或者,客户端可以将使用签名创建的限时令牌传递给服务器端可以验证的秘密令牌。

    或者,您也可以仅针对这一接口(例如路径受限、quitckly-expiring)将令牌放入 cookie。

    另一种方法是通过 AJAX 下载整个文件,从而允许您正常设置标题。然后,您必须将内容呈现为可下载的本地资源,这需要一系列特定于浏览器的黑客攻击(例如,使用 data: 或 filesystem: URL,并可能使用download 属性链接)。考虑到复杂性,这通常不值得费心,特别是如果文件非常大,可能会带来更多的存储限制。

    【讨论】:

    • 我喜欢限时令牌的想法。我看到它的方式它只会在几秒钟内有效。下载调用将在 GetDownloadToken 调用之前进行,该调用将受到常规令牌的保护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多