CSP(Content-Security-Policy)
Content-Security-Policy 的 HTTP Header 可以指示浏览器只信任指定白名单的JS源。即使通过XSS攻击注入了恶意的脚本文件,浏览器也不会执行。
CSP配置例子
location ~ ^/test/(.*)$ {
add_header Content-Security-Policy "default-src 'self' ; font-src 'self' data: ;script-src 'self' 'unsafe-inline' https://*; worker-src blob:; media-src blob: https://* http://*; style-src 'self' 'unsafe-inline' https://*;base-uri 'self'; form-action 'self'; frame-ancestors 'self'; object-src 'none';img-src 'self' data: *;";
expires off;
}
nonce
如果你担心内联脚本(unsafe-inline)的JS注入,但是又需要内联JS的执行。可以使用nonce属性。CSP Header会返回一个随机字符串,当它与script标签的nonce属性相匹配时,说明这段内联的js是安全的,是可以执行的。
但是这个随机字符串,应当是唯一,不应该是写死的。例如随机数是

本文介绍了如何利用Content-Security-Policy(CSP)HTTP头部来增强网站的安全性,防止XSS攻击。通过设置CSP策略,只允许执行特定来源的脚本,并详细阐述了nonce(随机数)的使用方法,确保内联JS的安全执行。同时,提供了通过nginx内置常量生成nonce,并在请求转发到tomcat时设置CSP策略,以及在tomcat页面中动态获取并使用nonce的方案。

2524

被折叠的 条评论
为什么被折叠?



