最近在安全测试中发现了一下网站的问题:
主要是配置一些参数:这些可以前端配置,也可以在nginx中进行配置
在nginx的server中添加请求头信息:
add_header Content-Security-Policy “upgrade-insecure-requests;connect-src *”;
add_header X-XSS-Protection “1; mode=block” always;
add_header X-Content-Type-Options “nosniff” always;
add_header Strict-Transport-Security “max-age=63072000; includeSubdomains; preload” always;
add_header Cache-Control no-store;
add_header X-Frame-Options SAMEORIGIN;
add_header Permissions-Policy “geolocation=(),midi=(),microphone=(),camera=(),fullscreen=(self)”;
add_header Referrer-Policy “no-referrer-when-downgrade”;
Referrer-policy
Referrer Policy是W3C官方提出的一个候选策略,主要用来规范Referrer,简单来说就是规定什么时候发送 Referer 字段,以及发送哪些信息。
最初是只有5种策略的,现在规范增加到9种:
no-referrer
整个 Referer 首部会被移除,Referer 不随着请求一起发送。
no-referrer-when-downgrade (默认值)
在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别(HTTPS -> HTTPS)的情况下,Referer 会被发送,在协议降级(HTTPS -> HTTP)的情况下 Referer 不会被发送。
origin
Referrer 发送的信息只包括协议+域名+端口,不包括其它信息。例如 https://example.com/page.html 会将 https://example.com/ 作为引用地址。
origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址,但是跨域时候只发送协议+域名+端口。
same-origin
同源请求发送,否则不发送。
strict-origin
在同等安全级别(HTTPS -> HTTPS)的情况下,发送Referrer(协议+域名+端口),但是在协议降级(HTTPS -> HTTP)的情况下不会发送。
strict-origin-when-cross-origin
对于同源的请求,会发送完整的URL作为引用地址;对于跨域请求,在同等安全级别(HTTPS -> HTTPS)的情况下,发送Referrer(协议+域名+端口);在协议降级(HTTPS -> HTTP)的情况下不发送此首部。
unsafe-url
无论协议是否降级,也不管是同源请求还是跨域请求,都发送完整的 URL(移除参数信息之后)作为引用地址,所以这种是一种不安全的协议。
这项设置会将受 TLS 安全协议保护的资源的源和路径信息泄露给非安全的源服务器。进行此项设置的时候要慎重考虑。——
Referrer-Policy,MDN文档
空字符串
相当于没有设置,在没有此类更高级别策略的情况下,默认使用 no-referrer-when-downgrade 。
Content Security Policy (CSP)
简单来说:CSP 通过告诉浏览器一系列规则,严格规定页面中哪些资源允许有哪些来源, 不在指定范围内的统统拒绝。
其实施有两种途径:
- 服务器添加 Content-Security-Policy 响应头来指定规则
- HTML 中添加 标签来指定 Content-Security-Policy 规则
配置相关参数,请找度娘
来源地址:https://blog.csdn.net/m0_46803792/article/details/129031051