CSP 是一个强大的安全机制,它允许网站管理员控制浏览器能够为特定页面加载哪些资源。这有助于防止跨站脚本 (XSS) 攻击和其他代码注入攻击,因为它可以限制脚本、样式表、图片等内容的来源。
头名称: Content-Security-Policy
示例: Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.com; object-src 'none';
'self'
)。https://trusted.com
的。object-src 'none'
)。Strict-Transport-Security
HSTS 强制浏览器只能通过 HTTPS 与网站进行通信,从而防止中间人攻击 (man-in-the-middle attacks) 劫持用户通过不安全的 HTTP 连接访问网站的尝试。一旦浏览器收到 HSTS 头,它会在指定的时间内记住这个设置。
示例: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
max-age
: 浏览器记住该设置的时间(秒),这里是一年。includeSubDomains
: 规则适用于所有子域名。preload
: 允许网站被包含在浏览器 HSTS 预加载列表中,以确保首次访问也是安全的。这个头用于防止点击劫持 (clickjacking) 攻击,即恶意网站将您的网站嵌入到 <iframe>
或 <frame>
中,诱骗用户点击。
X-Frame-Options
DENY
: 不允许任何页面嵌入此页面。SAMEORIGIN
: 只允许同源的页面嵌入此页面。ALLOW-FROM uri
: (已废弃,安全性不如 DENY/SAMEORIGIN)允许指定源的页面嵌入。X-Frame-Options: DENY
这个头用于防止浏览器进行 MIME 类型嗅探,从而避免一些安全漏洞。例如,如果服务器错误地将一个 JavaScript 文件标记为 text/plain
,浏览器可能会根据文件内容将其识别为 JavaScript 并执行,这可能导致 XSS。
nosniff
会确保浏览器不会尝试将其作为 JavaScript 执行。这有助于缓解某些类型的跨站脚本 (XSS) 攻击
X-Content-Type-Options
nosniff
X-Content-Type-Options: nosniff
这个头用于启用或禁用浏览器内置的 XSS 过滤器。然而,现代的 CSP 提供了更强大和灵活的 XSS 防御机制,并且这个头有时本身也可能引入安全问题,所以现在普遍不推荐使用它,而是优先配置 CSP。
X-XSS-Protection
0
: 禁用 XSS 过滤器。1; mode=block
: 启用 XSS 过滤器,并在检测到攻击时阻止页面渲染。X-XSS-Protection: 0
(通常是为了确保其禁用,完全依赖 CSP)这个头控制浏览器在导航到其他页面时,如何发送 Referer
(注意,是 Referer,不是 Referrer) 头信息。发送完整的 Referer 信息有时可能泄露敏感数据,比如 URL 中的会话 ID。
Referrer-Policy
no-referrer
: 永远不发送 Referer 头。same-origin
: 只在同源请求时发送 Referer 头。strict-origin-when-cross-origin
: 跨源请求只发送源(不包含路径和查询参数),同源请求发送完整 URL。Referrer-Policy: same-origin
Origin: https://www.frontend-app.com
: 安全相关头 (CORS)
Origin
头,指明请求的来源域。Origin
头,决定是否允许该跨域请求。这是浏览器实现的一种重要的沙箱安全机制,防止恶意网站未经许可访问其他域的资源。Referer: https://www.frontend-app.com/settings/profile
: 安全相关头 (隐私/信息泄露)
Referrer-Policy
响应头,可以控制浏览器在发送 Referer
头时的策略,以增强隐私保护和避免信息泄露。Authorization: Bearer eyJhbGciOiJIUzI1Ni...
: 安全相关头