Java 设置X-Content-Type-Options响应头会损坏PNG文件
我想在我的应用程序中明确这些标题:Java 设置X-Content-Type-Options响应头会损坏PNG文件,java,security,xss,response-headers,Java,Security,Xss,Response Headers,我想在我的应用程序中明确这些标题: 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-Se
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");
到目前为止,我知道:
框架
、iframe
或对象
中呈现页面的选项web.xml
。但结果是,它更改了.png
文件编码,并删除了损坏png文件编码的?
字符,从而给出了错误的png数据
请检查屏幕截图,它没有?
字符,被空字符串替换,因此不允许渲染.png
文件
我分析了代码,发现删除响应头X-Content-Type-Options
就可以了(.png
文件渲染正确)
我仍然不确定为什么会出现此问题,以及为什么X-Content-Type-Options
将产生此问题的?
字符替换为“”
字符串。谁能解释一下
提前感谢:)我觉得你的答案很接近:XSS过滤特殊字符对于二进制文件来说是个坏主意,因为二进制文件可能会有效地使用在(x)html、js或类似解释文件中不合适的字符 通常,web应用程序会将这些资源拆分到自己的目录中,并对其内容应用不同的进程,例如,不在其上运行XSS保护过滤器。配置筛选器时,应排除已知专门包含二进制数据的路径,如前面提到的资源目录
很可能的情况是,标题导致/禁止过滤器猜测MIME类型,将二进制文件误解为html或类似文件(可能基于PNG标题中的文本),或者默认情况下使用过滤器,然后对其进行清理。可能是您的MIME类型头错误,嗅探器正在修复它(因此告诉它不要这样做会阻止它恢复)。+1对于答案,web.xml中是否有排除XSS脚本的已知路径的选项。现在我有一个修复方法,在继续处理响应头之前,我检查了过滤器中的路径。如果有任何其他的解决办法,我想除了它,我很高兴知道它。我不知道有没有不变得复杂。这个问题似乎相关,他们得出了类似的结论:但公认的答案是代码。