zhangdizhangdi

安全策略

参考

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 仅作用于服务器。

Content-Security-Policy 🌟

CSP,内容安全策略

X-Frame-Options 🌟

是否允许一个页面可以在 <frame><iframe><embed> 或者 <object> 中展现。
站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免点击劫持攻击。

  1. DENY:拒绝任何域加载
  2. SAMEORIGIN:允许同源域下加载
  3. ALLOW-FROM uri:可以定义允许frame加载的页面地址

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

X-DNS-Prefetch-Control

X-DNS-Prefetch-Control 头控制着浏览器的 DNS 预读取功能。DNS 预读取是一项使浏览器主动去执行域名解析的功能,其范围包括文档的所有链接,无论是图片的,CSS 的,还是 JavaScript 等其他用户能够点击的 URL。

X-Content-Type-Options

在缺失 MIME 类型或客户端认为文件设置了错误的 MIME 类型时,浏览器可能会通过查看资源来进行 MIME 嗅探。

每一个浏览器在不同的情况下会执行不同的操作。(例如,Safari 会在发送的 MIME 类型不合适时查看文件的扩展名。)由于某些 MIME 类型可能代表可执行内容,会存在一些安全问题。服务器可以通过发送 X-Content-Type-Options 标头来阻止 MIME 嗅探。

X-Powered-By

bash
# 删除 Nginx 版本,只显示 "Server: nginx"
server_tokens   off;

X-Download-Options

如果该头信息的值为"noopen",表示浏览器(Internet Explorer)不应该自动打开文件,而是应该将文件保存到本地。

X-Permitted-Cross-Domain-Policies

Controls cross-domain behavior for Adobe products, like Acrobat

X-XSS-Protection

主要针对反射型 XSS 攻击有效

由于现代浏览器提供了更强大和更可靠的防护措施(如内容安全策略 CSP),X-XSS-Protection 已被许多浏览器厂商弃用。

其他