【发布时间】:2022-01-11 22:37:18
【问题描述】:
我正在阅读有关 Mozilla [1] 的子源完整性的信息。他们分析了下面的代码 sn-p 并写了以下内容:
匿名值意味着浏览器应该忽略用户可能与域相关联的任何 cookie 或身份验证。 这可以防止跨域数据泄漏,并且还可以使请求更小。
<script src="https://code.jquery.com/jquery-2.1.4.min.js"
integrity="sha384-R4/ztc4ZlRqWjqIuvf6RX5yb/v90qNGx6fS48N0tRxiGkqveZETq72KgDVJCp2TC"
crossorigin="anonymous"></script>
我很感兴趣为什么这可以防止跨域数据泄漏[2]。 Mozilla 写道:
攻击者会尝试加载具有已知摘要的资源,并注意加载失败。如果加载失败,攻击者可以推测响应与哈希不匹配,从而获得一些洞察其内容。例如,这可能会显示用户是否登录到特定服务。
我了解如何使用integrity 属性来显示资源的内容。如果内容依赖于客户端,这似乎很有趣。但是,我不明白两件事:
- 如果在特定客户端加载资源时,黑客对资源的内容感兴趣,并且黑客可以控制该页面上的 HTML 和 Javascript。那为什么黑客会尝试通过完整性哈希来泄露该资源的内容,为什么不直接在客户端获取资源并将
responseText发送到恶意网站呢? - Mozilla 似乎描述了网站所有者需要将
crossorigin设置为anonymous以便黑客无法通过暴力破解哈希来“暴力破解”页面信息?如果黑客可以控制页面上的integrity属性,那么在大多数情况下他们也可以控制crossorigin属性,那么这有什么关系呢?
【问题讨论】:
标签: javascript html http cross-domain