通过nginx失效安全防护
- 防止跨域-请求头Content-Security-Policy
- 防止跨站脚本攻击(XSS)-请求头X-Xss-Protection
- 跨站脚本攻击(XSS)-请求头X-Content-Type-Options
- 防止点击劫持攻击-请求头X-Frame-Options
防止跨域-请求头Content-Security-Policy
CSP配置
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data: ;";
CSP参数解释
- default-src 'self':不允许跨源,所有内容均来自网站的自己的域
- 'unsafe-inline':允许加载 inline 资源,例如style属性、onclick、inline js、inline css等
- 'unsafe-eval':允许加载动态 js 代码,例如 eval()
- blob: :允许浏览器中创建和处理二进制数据,Blob对象是一种二进制数据类型,通常,Blob对象用于在浏览器中处理大量的数据或文件
- data: :允许加载 data: 协议,例如:base64编码的图片
CSP指令
指令值 | 说明 |
---|---|
* | 允许加载任何内容 |
'none' | 不允许加载任何内容 |
'self' | 允许加载相同源的内容 |
www.a.com | 允许加载指定域名的资源 |
*.a.com | 允许加载 a.com 任何子域名的资源 |
https://a.com | 允许加载 a.com 的 https 资源 |
https: | 允许加载 https 资源 |
data: | 允许加载 data: 协议,例如:base64编码的图片 |
'unsafe-inline' | 允许加载 inline 资源,例如style属性、onclick、inline js、inline css等 |
'unsafe-eval' | 允许加载动态 js 代码,例如 eval() |
防止跨站脚本攻击(XSS)-请求头X-Xss-Protection
配置
add_header X-Xss-Protection "1;mode=block";
解释
如果页面中检测到跨站脚本攻击(XSS),浏览器将关闭脚本执行,并显示一个安全提示消息,而不是执行恶意脚本。
跨站脚本攻击(XSS)-请求头X-Content-Type-Options
配置
add_header X-Content-Type-Options nosniff;
解释
当服务器发送一个不包含Content-Type头的响应时,一些浏览器会尝试猜测响应内容的类型。这被称为"sniffing"。
nosniff选项告诉浏览器不要尝试这种猜测,而是始终按照响应的Content-Type头来处理内容。这可以防止某些类型的跨站脚本攻击(XSS)。
防止点击劫持攻击-请求头X-Frame-Options
配置
add_header X-Frame-Options SAMEORIGIN;
解释
用于控制页面是否允许在iframe、embed或object中嵌入。
- SAMEORIGIN:只允许在相同域名的页面中嵌入。
- DENY:不允许在任何页面中嵌入。
- ALLOW-FROM uri:这是一个被弃用的指令,不再适用于现代浏览器,请不要使用它。在支持旧版浏览器时,页面可以在指定来源的 frame 中展示。