gpt4 book ai didi

javascript - GET 请求的 CSRF 预防

转载 作者:行者123 更新时间:2023-11-28 15:45:44 27 4
gpt4 key购买 nike

据我所知,CSRF 预防似乎侧重于 (1) 使 GET 请求无副作用,以及 (2) 仅使用带有 CSRF token 的 POST 请求来更改状态。但在我看来,这假设攻击者的唯一目标可能是恶意更新受害者网站。如果攻击者只想要可以通过 GET 请求检索的信息怎么办?难道有人无法将受害网站的敏感资源嵌入到攻击网站并通过 JavaScript 与其交互吗?

所以我的问题是(1)这可能吗?(2)如何防止这种情况发生?

最佳答案

攻击者可能在其页面上包含以下脚本:

$.get('http://vulnerable.example.com/json')

但是,由于 Same Origin Policy ,攻击者域上的 JavaScript 无法读取响应。同源策略检查域、协议(protocol)和端口是否匹配 - 如果不匹配,JavaScript 在尝试读取响应时将遇到安全错误。例如,这是 Chrome 在尝试从另一个域访问 IFrame 时发出的警告 - 这与保护 JavaScript 响应的机制完全相同。

Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': blocked a frame with origin "http://evil.com" from accessing a frame with origin "http://vulnerable.example.com". Protocols, domains, and ports must match.

总而言之,POST 请求必须使用 CSRF token ,因为即使无法读取响应,仍然会发出 POST 请求,而 GET 请求通常不会引起关注,因为无法读取响应并且它们是非破坏性的。 JSON 劫持存在问题,但您必须追溯到 Firefox 3 才能找​​到容易受到此攻击的浏览器。请参阅Is JSON Hijacking still an issue in modern browsers?

关于javascript - GET 请求的 CSRF 预防,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22413014/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com