【问题标题】:web security: What happens when Content-Disposition is not supplied?网络安全:没有提供 Content-Disposition 时会发生什么?
【发布时间】:2019-11-15 11:26:18
【问题描述】:

我允许用户从我的应用程序中下载文件。为此,我根据文件类型将“Content-Disposition”明确设置为“内联”或“附件”。这现在有点手动。因此,对于 pdf 文件,我将其设置为“内联”,但对于 html 文件,我将其设置为“附件”。

  1. 有没有办法根据文件类型自动决定 express 中“Content-Disposition”的值?

  2. 如果我不发送“Content-Disposition”标头,目前在我看来,该请求被视为具有“Content-Disposition: inline”。这个观察是正确的,还是有其他原因?

  3. 如果默认浏览器尝试执行/预览文件(基于第 2 点),当您允许下载可以执行 javascript 的 html 文件时,这对安全意味着什么?

【问题讨论】:

    标签: javascript express security download content-disposition


    【解决方案1】:

    有没有办法根据文件类型自动决定 express 中“Content-Disposition”的值?

    您可以编写检查响应并对其进行修改的中间件。

    如果我不发送 "Content-Disposition" 标头,目前在我看来,该请求被视为具有 "Content-Disposition: inline" 。这个观察是正确的,还是有其他原因?

    参见MDN,它说:“HTTP 上下文中的第一个参数是inline默认 值,表示它可以显示在网页内,也可以作为网页显示) ……”

    如果默认浏览器尝试执行/预览文件(基于第 2 点),当您允许下载可以执行 javascript 的 html 文件时,这对安全意味着什么?

    除非您提供您(网站作者)不信任的 JavaScript,否则不会很多。

    如果您需要提供可能包含您不信任的 JavaScript 的 HTML 文档,则从不同的来源提供它们(使用同源策略对它们进行沙箱处理)和/或实施 Content Security Policy 以禁止它们执行JavaScript。

    【讨论】:

    • 感谢您的快速信息回复。对于第 1 点,我的意思是问是否有一些现有的库可以做到这一点,或者这个决定是否应该是特定于应用程序的?另外,如果下载发生在同一个来源,csp 将如何提供帮助,那么 javascript 不会在当前来源的上下文中执行,在这种情况下它不会被阻止?
    • 如果CSP禁止所有JS,则不会执行JS。
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2010-11-26
    相关资源
    最近更新 更多