gpt4 book ai didi

javascript - 在 HTML 中使用 token 时 CSRF 保护的意义是什么

转载 作者:行者123 更新时间:2023-12-03 03:37:14 28 4
gpt4 key购买 nike

我是网络安全和 CSRF 的新手。

我读过最流行的 CSRF 保护方法是将 CSRF token 放置在 HTML 形式或 META 标记中,以便在 JavaScript 中读取它以进行 AJAX 操作。

但我不明白使用不同站点的 cookie 数据的黑客可以读取 HTML 中 CSRF token 的值并使用它向用户登录的站点发送请求的意义是什么。

请帮我解释一下。

最佳答案

CSRF token 的发明是为了防止生态系统外部对服务器进行操作。

在网络世界中,防止从原始站点发布表单(可以是服务器上的任何其他操作)。

您问的是如何操作,因此使用一些生成的 token 将隐藏字段放入表单中的简单技术使服务器可以确保它获得的 Post 请求来自网站的表单而不是来自其他地方。

例如,如果我是攻击者,而您的表单没有这样的 token ,我可以在我的网站上创建一个表单,其中 action 字段将指向您的服务器位置。

<form method="POST" action="http://your-site.com/transfer-mony.php">
<input type="text" name="amount" value="100000" />
<button>submit</button>
</form>

如果您有一个 token ,并且您的服务器将在每个请求上验证它,那么我的表单中的帖子将被拒绝。

所以你问,好吧,我可以转到原始站点并复制该 token ,仅此而已。

所以,基本上, token 应该是一次性的,它们仅对下一个用户操作有效。Token中可以包含用户的IP,并用私钥签名,那么如果你把我的Token复制给你,服务器会拒绝该请求,因为Token中的IP与发送请求的客户端的IP不一致。

JWT ,是这些技术之一

如今更常见的做法(感谢 Angular)是服务器返回带有 token 的 Cookie,并且下一个请求必须将其放在 header 中请求。

注意,您的网站有 XSS漏洞基本上可以绕过所有CSRF机制。

希望大家能够理解,如果不能理解,可以在评论区提问。

关于javascript - 在 HTML 中使用 token 时 CSRF 保护的意义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45800127/

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