网站的Header--安全设置

参考资料: https://infosec.mozilla.org/guidelines/web_security#content-security-policy

这是我主页的CSP设置, CSP的设置可以有效防止XSS. 如需使用, 只要替换或添加自己需要的域名即可~

1
2
3
4
5
6
7
<meta http-equiv="Content-Security-Policy"
content="img-src 'self' image.torch-fan.site img1.imgtp.com;
script-src 'unsafe-inline' 'self' lib.baomitu.com at.alicdn.com;
style-src 'self' 'unsafe-inline' at.alicdn.com lib.baomitu.com;
media-src 'self' blob:;
worker-src 'self' blob:;
object-src 'self' ">

但是, 可以看到script-src中有unsafe-inline, 这仍然不是非常安全, 因此可以去掉, 然后添加script的hash值(不用担心不知道, 浏览器的console中会打印被屏蔽的javascript脚本的hash值, 复制粘贴即可):

1
2
3
4
5
6
7
<meta http-equiv="Content-Security-Policy"
content="img-src 'self' imagebed.torch-fan.site img1.imgtp.com;
script-src 'self' lib.baomitu.com at.alicdn.com 'sha256-u0AitIxF7N0hYtvjq/jQbABXtOYAsJnJeCFoRizdaDM=' 'sha256-cPZda3lIu6/tDfdRIA6fN74jCn3QXC9sg4vsBi+VW6w=' 'sha256-gX0IeNsFB1Hts7cNk8JTGzzl9RcNAI+59T2fVUJBw1I=';
style-src 'self' at.alicdn.com lib.baomitu.com 'sha256-quaYMDAFArRHzQDsZzJMSjqcQCtz+UUgFIbN2a8TIQc=' 'sha256-NK4ORibhZQrqK59KJ1o+jAxvEYk2UPVOV0Wgggbfaek=';
media-src 'self' blob:;
worker-src 'self' blob:;
object-src 'self' ">

这种方法也有个缺陷, 对于需要反复构建的网站, 内联script的hash值并非一成不变的, 此时就需要用nonce-<v>

Nonces 是通过在 CSP 中指定允许资源的序号,达到限制非法 inline 代码的目的。只有与 CSP 策略中序号一致的代码可以执行,具体使用方式如下(CSS就没必要搞安全了-或者说没那么重要):

Content-Security-Policy: script-src 'nonce-1'

<script nonce="1">alert(0);</script>

1
2
3
4
5
6
7
<meta http-equiv="Content-Security-Policy"
content="img-src 'self' imagebed.torch-fan.site img1.imgtp.com;
script-src 'self' lib.baomitu.com at.alicdn.com utteranc.es 'nonce-1' 'nonce-2' 'nonce-3' 'nonce-4' 'nonce-5' 'nonce-6' 'nonce-7' 'nonce-8' 'nonce-9' 'nonce-10' 'nonce-11' 'nonce-12' 'nonce-13' 'nonce-14';
style-src 'self' 'unsafe-inline' at.alicdn.com lib.baomitu.com;
media-src 'self' blob:;
worker-src 'self' blob:;
object-src 'self' ">

最后, 根据mozilla observatory的网站扫描结果, 最终网站的安全设置如下:

1
2
3
4
5
6
7
8
9
10
<meta http-equiv="Content-Security-Policy"
content="default-src 'none'; form-action 'none'; base-uri 'self';
img-src 'self' imagebed.torch-fan.site img1.imgtp.com;
script-src 'self' lib.baomitu.com at.alicdn.com utteranc.es 'nonce-1' 'nonce-2' 'nonce-3' 'nonce-4' 'nonce-5' 'nonce-6' 'nonce-7' 'nonce-8' 'nonce-9' 'nonce-10' 'nonce-11' 'nonce-12' 'nonce-13' 'nonce-14';
style-src 'self' 'unsafe-inline' at.alicdn.com lib.baomitu.com;
media-src 'self' blob:;
worker-src 'self' blob:;
object-src 'self';
font-src 'self' lib.baomitu.com at.alicdn.com data:;
frame-src 'self' utteranc.es; ">

网站的Header--安全设置
https://www.torch-fan.site/2022/07/21/网站的安全设置/
作者
Torch-Fan
发布于
2022年7月21日
更新于
2022年11月15日
许可协议