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会返回一个随机字符串,当它与s