安全策略
参考
- Web 安全 - MDN
- Headers#安全 - MDN
- Helmet - GitHub
- 从 Helmet 看 11 种浏览器安全策略 - 掘金
- 防盗链的矛与盾 - 微信公众号文章
Set-Cookie 🌟
bash
Set-Cookie:<key>=<value>; Expires=<expriesDate> [;domain=domain][ ;path=path] ;Secure; HttpOnly; SameSite=strict
Secure
当请求是 HTTPS 或者其他安全协议时,包含 secure 选项的 cookie 才能被发送至服务器。
SameSite
- Strict
仅对同一站点的请求发送 cookie,即请求来自设置 cookie 的站点。如果请求来自不同的域名或协议(即使是相同域名),则携带有 SameSite=Strict 属性的 cookie 不会被发送。 - Lax
默认值。cookie 不会在跨站请求中被发送,如:加载图像或框架(frame)的请求。但 cookie 在用户从外部站点导航到源站时,cookie 也会被发送(例如,访问一个链接)。 - None
在跨站和同站请求中均会发送 cookie。在设置这一属性值时,必须同时设置 Secure 属性,就像这样:SameSite=None; Secure
HttpOnly
JavaScript Document.cookie API 无法访问带有 HttpOnly 属性的 cookie;此类 Cookie 仅作用于服务器。
- HTTP Cookie - MDN
- Set-Cookie - MDN
- Cookie 的 SameSite 属性 - 阮一峰
Content-Security-Policy 🌟
CSP,内容安全策略
- Content-Security-Policy - MDN
- Content-Security-Policy-Report-Only - MDN
- 内容安全策略(CSP (Content Security Policy))详解 - 掘金
X-Frame-Options 🌟
是否允许一个页面可以在 <frame>
、<iframe>
、<embed>
或者 <object>
中展现。
站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免点击劫持攻击。
- DENY:拒绝任何域加载
- SAMEORIGIN:允许同源域下加载
- ALLOW-FROM uri:可以定义允许frame加载的页面地址
- X-Frame-Options - MDN
Strict-Transport-Security
HTTP Strict-Transport-Security(HSTS),只通过 HTTPS 访问该站点,并且以后使用 HTTP 访问该站点的所有尝试都应自动重定向到 HTTPS。
Referrer-Policy
用来规定什么时候发送 Referer
字段,以及发送哪些信息。
bash
# Chrome Headers - General 可以查看到
Referrer Policy: strict-origin-when-cross-origin
- Referrer-Policy - MDN
- HTTP Referer 教程 - 阮一峰
X-DNS-Prefetch-Control
X-DNS-Prefetch-Control 头控制着浏览器的 DNS 预读取功能。DNS 预读取是一项使浏览器主动去执行域名解析的功能,其范围包括文档的所有链接,无论是图片的,CSS 的,还是 JavaScript 等其他用户能够点击的 URL。
- X-DNS-Prefetch-Control - MDN
X-Content-Type-Options
在缺失 MIME 类型或客户端认为文件设置了错误的 MIME 类型时,浏览器可能会通过查看资源来进行 MIME 嗅探。
每一个浏览器在不同的情况下会执行不同的操作。(例如,Safari 会在发送的 MIME 类型不合适时查看文件的扩展名。)由于某些 MIME 类型可能代表可执行内容,会存在一些安全问题。服务器可以通过发送 X-Content-Type-Options 标头来阻止 MIME 嗅探。
- X-Content-Type-Options - MDN
- MIME 嗅探 - MDN
X-Powered-By
bash
# 删除 Nginx 版本,只显示 "Server: nginx"
server_tokens off;
X-Download-Options
如果该头信息的值为"noopen",表示浏览器(Internet Explorer)不应该自动打开文件,而是应该将文件保存到本地。
- X-Download-Options HTTP Header - invicti
- Customizing the download experience - Microsoft Internet Explorer
X-Permitted-Cross-Domain-Policies
Controls cross-domain behavior for Adobe products, like Acrobat
X-XSS-Protection
主要针对反射型 XSS 攻击有效
DANGER
由于现代浏览器提供了更强大和更可靠的防护措施(如内容安全策略 CSP),X-XSS-Protection 已被许多浏览器厂商弃用。
- X-XSS-Protection - MDN