【问题标题】:CSRF protection for file downloads文件下载的 CSRF 保护
【发布时间】:2018-07-12 23:15:00
【问题描述】:

在我们的应用程序中,用户可以通过按下上下文菜单按钮来下载文件。目前,我们通过创建 iframe 并将其附加到具有指向服务器上文件位置的 src 属性的 dom 来实现此功能。

我们最近向应用程序添加了CSRF 保护,您可以猜到文件下载问题出现了问题。这很容易通过提供 csrf 令牌作为查询参数来解决,但最终会破坏保护方法的目的并将令牌暴露给侦听器。

有没有办法使用可配置的Http Headers 请求来触发文件下载(即按下“下载文件”按钮后触发native Save as... 对话框)?

请注意,即使数据本身不会暴露给攻击者的站点,我们也希望避免恶意页面向服务器发送多个如此繁重的请求,从而需要 CSRF 保护。

最后请记住,我们必须保持与 Internet Explorer 10 的兼容性,这可能会限制我们的选项(例如,锚元素中的 download 属性在此处不起作用)。

【问题讨论】:

    标签: javascript download csrf-protection


    【解决方案1】:

    单独解决您的问题要求...

    1) “有没有办法使用带有可配置 Http Headers 的请求来触发文件下载?”

    2)“想避免多次如此繁重的请求”

    听起来您需要 DDOS 对策而不是 CSRF 对策来满足此要求。上一点中的 CSRF 对策确保下载请求是有效的,但 CSRF 不关心重复多个有效请求。例如,如果攻击者实施了反复单击下载按钮的 AutoIt 脚本,您将遇到同样的问题。

    有多层实施对策:

    3) “必须与 Internet Explorer 10 保持兼容”

    上述建议在某些版本的 IE 中受到限制:

    注意:实现细节被省略了,因为它依赖于你的服务器端堆栈。

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 2020-12-18
      • 2018-05-27
      相关资源
      最近更新 更多