CSP指的是内容安全策略,是一种用于增强网站安全的机制。它的主要作用是通过限制网页内容的来源,防止跨站脚本攻击(XSS)和其他安全漏洞。
CSP通过定义一系列的策略规则,对网站加载或执行的资源进行管理和控制。这些策略规则可以包括允许加载的资源类型、来源和方式等。通过限制哪些内容可以被加载和执行,CSP可以有效地减少潜在的安全风险,提高网站的安全性。
CSP的主要作用包括:
- 防止跨站脚本攻击(XSS):CSP可以限制网页中嵌入的脚本的来源,从而防止攻击者注入恶意脚本,保护用户的隐私和安全。
- 防止数据注入攻击:CSP可以限制用户输入的内容,防止攻击者注入恶意数据,从而防止数据注入攻击。
- 提高网站的安全性:通过限制网页内容的来源,CSP可以减少潜在的安全风险,提高网站的安全性。
- 增强网站的可信度:使用CSP可以向用户表明网站对其安全性非常重视,增强用户对网站的可信度。
需要注意的是,CSP并不能完全消除安全风险,但它可以作为一种额外的安全层来增强网站的安全性。因此,在使用CSP时,建议根据实际情况进行配置和调整,以获得最佳的安全效果。
使用 add_header Content-Security-Policy ‘frame-ancestors https://*.xxx.cn’;
server {
listen 80;
gzip on; #开启gzip
gzip_vary on;
gzip_min_length 1k; #不压缩临界值,大于1k的才压缩,一般不用改
gzip_buffers 4 16k;
gzip_comp_level 9; #压缩级别,数字越大压缩的越好
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-icon; #压缩文件类型,缺啥补啥
server_name *.xxx.com *.xxx2.cn; #这个挺重要,不然所有域名都能访问
server_tokens off; #关闭nginx版本号,防止通过版本号进行漏洞渗透
# 允许指定的域名通过iframe嵌入
add_header Content-Security-Policy 'frame-ancestors https://*.xx.cn';
# 通过referer判断来源,走不同的请求拦截
if ($http_referer ~ 'bing.com')
{
return 302 https://www.xxx.cn/;
}
location /static/match-config.js{
#不同的域名请求过来,指定不同的重定向源
if ($host ~ "xxx.xxxx.com")
{
return 301 https://$host/static/min-configs/xx.js?$args;
}
}
location =/other-sign-auth{
#验证other-sign-auth路由只有referer检验通过才往后走,检验不过直接拦截403
valid_referers xxx.xxx.org.cn;
if ($invalid_referer) {
return 403;
}
}
# 判断空referer并且在有某些参数情况,进行拦截,这种一般防止把路由跟参数直接粘贴出来使用
set $ref 1;
valid_referers none 1.1.1;
if ($args ~ "authParams" ){
set $ref "11";
}
if ($args ~ "daohang-auth" ){
set $ref "11";
}
if ($http_referer = ''){
set $ref "${ref}1";
}
location / {
#注意在匹配的路由location中判断
if ($ref = "111"){
return 403;
}
#一般前端路由入口禁止缓存,不要将所有静态资源都禁止缓存,不然服务器压力带宽会很大,渲染速度也会很慢
add_header Cache-Control no-cache;
add_header Pragma no-cache;
add_header Expires 0;
}
}