内容安全策略
在本节中,我们将说明什么是内容安全策略,并描述如何使用CSP来减轻某些常见攻击。
什么是CSP(内容安全策略)?
CSP是一种浏览器安全机制,旨在减轻XSS还有其他一些攻击。它可以通过限制资源(例如脚本和图像)来加载和限制其他页面是否可以构成页面。
要启用CSP,响应需要包括一个称为HTTP响应标头内容 - 安全政策
具有包含策略的值。该策略本身由一个或多个指令组成,分别由半洛龙隔开。
使用CSP缓解XSS攻击
以下指令将仅允许从相同的起源作为页面本身:
脚本src'self'
以下指令将仅允许从特定域加载脚本:
script-src https://scripts.normal-beplay体育能用吗website.com
从外部域中允许脚本时应注意。如果攻击者有任何方法可以控制从外部域提供的内容,那么他们也许可以发动攻击。例如,内容交付网络(CDN)不使用人均URL,例如ajax.googleapis.com
,不应该被信任,因为第三方可以将内容纳入其域。
除了白色的特定域外,内容安全策略还提供了其他两种指定可信赖资源的方法:Nonces和Hashes:
- CSP指令可以指定一个nonce(随机值),并且必须在加载脚本的标签中使用相同的值。如果值不匹配,则脚本将不执行。为了有效作为控制,必须在每个页面加载上牢固地生成NONCE,并且攻击者不可猜测。
- CSP指令可以指定受信任脚本的内容的哈希。如果实际脚本的哈希不匹配指令中指定的值,则脚本将不执行。如果脚本的内容发生了变化,那么您当然需要更新指令中指定的哈希值。
CSP阻止像这样的资源很常见脚本
。但是,许多CSP确实允许图像请求。这意味着您经常可以使用IMG
向外部服务器提出请求的元素以披露CSRF令牌, 例如。
一些浏览器,例如Chrome,已内置晃来晃去的标记缓解将阻止包含某些字符的请求,例如原始的,未编码的新线条或角度括号。
某些政策更具限制性,并防止所有形式的外部请求。但是,仍然可以通过引发某些用户交互来解决这些限制。要绕过这种形式的策略,您需要注入一个HTML元素,当单击时,该元素将存储并将注入元素包含的所有内容发送到外部服务器。
使用CSP缓解悬空的标记攻击
以下指令将仅允许与页面本身相同的原点加载图像:
img-src'自我'
以下指令将仅允许从特定域加载图像:
img-src https://images.normal-beplay体育能用吗website.com
请注意,这些策略将阻止一些悬挂的标记利用,因为无用户互动捕获数据的一种简单方法是使用IMG
标签。但是,它不会阻止其他漏洞利用,例如那些注入锚标标签的漏洞HREF
属性。
绕过政策注入CSP
您可能会遇到一个反映实际策略输入的网站,beplay体育能用吗很可能在报告 - 乌里
指示。如果网站反映了您可以控制的参数,则可以注入半隆来添加自己的CSP指令。通常,这个报告 - 乌里
指令是列表中的最后一个。这意味着您需要覆盖现有指令,以利用此漏洞并绕过策略。
通常,不可能覆盖现有的脚本src
指示。但是,Chrome最近引入了Script-SRC-Elem
指令,这使您可以控制脚本
元素,但不是事件。至关重要的是,该新指令使您能够覆盖现有脚本src
指令。使用此知识,您应该能够解决以下实验室。
保护点击劫机使用CSP
以下指令将仅允许该页面由来自相同来源的其他页面构成:
框架 - 自我'
以下指令将完全防止构架:
框架“无”
使用Content Security策略来防止Click Jacking比使用X-Frame-Options标头更灵活,因为您可以指定多个域并使用通配符。例如:
框架 - 委托人的自我'https://normal-website.combeplay体育能用吗 https://goust-website.com
CSP还验证了父帧层次结构中的每个帧,而X框架选项
仅验证顶级帧。
建议使用CSP防止点击夹克攻击。您也可以将其与X框架选项
标题可为不支持CSP的较旧浏览器提供保护,例如Internet Explorer。