网站运行过程中通常会遇到部分安全问题,通过nginx的add_header可以达到部分安全防护配置需求,常规安全配置参考如下,设置完毕后可以通过安全扫描工具进行扫描,附上免费的安全扫描网站。
https://www.immuniweb.com/websec/
#设置跨域支持
add_header Access-Control-Allow-Origin "*";
#设置网站https强制访问
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options "deny";
add_header X-Content-Type-Options "nosniff";
add_header Permissions-Policy "geolocation=(),camera=(),microphone=()";
#add_header referrer-policy "strict-origin-when-cross-origin";
#设置可以加载哪些网站
add_header Content-Security-Policy "frame-ancestors 'self' https://*.a.com https://*.b.com";
防止XSS攻击
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
X-Frame-Options: 响应头表示是否允许浏览器加载frame等属性,有三个配置DENY禁止任何网页被嵌入,SAMEORIGIN只允许本网站的嵌套,ALLOW-FROM允许指定地址的嵌套
X-XSS-Protection: 表示启用XSS过滤(禁用过滤为X-XSS-Protection: 0),mode=block表示若检查到XSS攻击则停止渲染页面
X-Content-Type-Options: 响应头用来指定浏览器对未指定或错误指定Content-Type资源真正类型的猜测行为,nosniff 表示不允许任何猜测
其他:
Content-Security-Policy:
定义页面可以加载哪些资源,
add_header Content-Security-Policy "default-src 'self'";
会限制所有的外部资源,都只能从当前域名加载,其中default-src定义针对所有类型资源的默认加载策略,self允许来自相同来源的内容
Strict-Transport-Security:
会告诉浏览器用HTTPS协议代替HTTP来访问目标站点
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
当用户第一次访问后,会返回一个包含了Strict-Transport-Security响应头的字段,这个字段会告诉浏览器,在接下来的31536000秒内,当前网站的所有请求都使用https协议访问,参数includeSubDomains是可选的,表示所有子域名也将采用同样的规则