gpt4 book ai didi

java - 设置 X-Content-Type-Options 响应 header 会损坏 PNG 文件

转载 作者:行者123 更新时间:2023-12-02 12:49:41 24 4
gpt4 key购买 nike

我想清楚地了解我的应用程序中的这些 header :

response.setHeader("Content-Security-Policy", "frame-ancestors 'self'");    
response.setHeader("X-Content-Type-Options", "nosniff");
response.setHeader("X-XSS-Protection", "1; mode=block");
response.setHeader("Strict-Transport-Security", "max-age=7776000; cludeSubdomains");
String contextPath = ((HttpServletRequest) request).getContextPath();
response.setHeader("SET-COOKIE", "JSESSIONID=" +
((HttpServletRequest)request).getSession().getId() +
";Path="+contextPath+";Secure;HttpOnly");
response.setHeader("Cache-control", "no-cache, no-store,max-age=0, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setHeader("X-Frame-Options", "SAMEORIGIN");

到目前为止我知道:

  1. 内容安全策略是一个附加的安全层,有助于检测并减轻某些类型的攻击,包括跨站点攻击脚本(XSS)和数据注入(inject)攻击。
  2. X-Content-Type-Options 响应 HTTP header 是服务器使用的标记,用于指示 MIME types不应更改和遵循 Content-Type header 中公布的内容。
  3. X-XSS-protection是 XSS 过滤器。
  4. Strict-Transport-Security 是一种选择加入的安全增强功能,由 Web 应用程序通过使用特殊的响应 header 来指定。一旦受支持的浏览器收到此 header ,该浏览器将阻止通过 HTTP 向指定域发送任何通信,而是通过 HTTPS 发送所有通信。
  5. 缓存控制通用 header 字段用于指定请求和响应中的缓存机制的指令。
  6. Pragma 旨在防止客户端缓存响应。然而,缓存控制和 Pragma 响应 header 之间存在差异,因为它们都执行相同的工作,只是 Pragma 是 HTTP/1.0 实现,而缓存控制是同一概念的 HTTP/1.1 实现。
  7. X-Frame-Options 用于指示是否允许浏览器在 frameiframeobject 中呈现页面>.

现在我在 CrossSiteScriptingFilter 中有这段代码,它映射到执行 XSS 过滤的 web.xml 中。但结果是它更改了 .png 文件编码并删除了 ? 损坏 PNG 文件编码的字符,从而提供了错误的 PNG 数据。

请检查屏幕截图,它没有 ? 字符,而是被空字符串替换,因此它不允许 .png 文件渲染。 enter image description here

我分析了代码,发现删除响应 header X-Content-Type-Options 就可以完成这项工作(.png 文件正在正确渲染)。

我仍然不确定为什么会出现此问题以及为什么 X-Content-Type-Options? 字符替换为 ""造成问题的字符串。有人可以解释一下吗。

提前致谢:)

最佳答案

在我看来,您的答案非常接近:对于二进制文件来说,特殊字符的 XSS 过滤是一个坏主意,因为二进制文件可能有效地使用在 (x)html、js 或类似文件中不合适的字符解释文件。

通常,网络应用程序会将此类资源拆分到自己的目录中,该目录将对其内容应用不同的过程,例如,不对其运行 XSS 保护过滤器。配置过滤器时,应排除已知专门包含二进制数据的路径,例如前面提到的资源目录。

标题可能会导致/禁止过滤器猜测 MIME 类型,将二进制文件误解为 html 或类似文件(可能基于 PNG 标题中的文本),或者只是通过过滤器返回默认,然后对其进行清理。可能是您的 MIME 类型 header 错误,而嗅探器正在修复它(因此告诉它不要这样做会阻止它恢复)。

关于java - 设置 X-Content-Type-Options 响应 header 会损坏 PNG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com