Javascript 在HTML中使用令牌时,CSRF保护的意义是什么

Javascript 在HTML中使用令牌时,CSRF保护的意义是什么,javascript,html,security,csrf,csrf-protection,Javascript,Html,Security,Csrf,Csrf Protection,我是网络安全和CSRF的新手 我已经读过最流行的CSRF保护方法是将CSRF令牌放在HTML格式中,或者放在META标记中,以便在JavaScript中为AJAX操作读取它 但我不明白,在不同站点使用cookie数据的黑客,会从HTML中读取CSRF令牌的值,并使用它向用户登录的站点发送请求,这是什么意思 请给我解释一下。CSRF令牌的发明是为了防止服务器上的操作来自生态系统之外 在web世界中,禁止从原始站点发布表单(可以是服务器上的任何其他操作) 您正在询问如何将隐藏字段与生成的令牌一起放入

我是网络安全和CSRF的新手

我已经读过最流行的CSRF保护方法是将CSRF令牌放在HTML格式中,或者放在META标记中,以便在JavaScript中为AJAX操作读取它


但我不明白,在不同站点使用cookie数据的黑客,会从HTML中读取CSRF令牌的值,并使用它向用户登录的站点发送请求,这是什么意思


请给我解释一下。

CSRF令牌的发明是为了防止服务器上的操作来自生态系统之外

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

您正在询问如何将隐藏字段与生成的令牌一起放入表单中,服务器可以确保它收到的
Post
请求来自站点表单,而不是来自其他地方

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

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

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

所以你问,好吧,我可以去原始站点复制那个令牌,就是这样

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

,是其中一种技术

现在更常见的做法(多亏了Angular),就是服务器返回一个带有令牌的Cookie,下一个请求必须在请求的头上有它

请注意,您的站点存在一个漏洞,您基本上可以绕过所有CSRF机制


我希望这是可以理解的,如果不能理解,您可以在评论中询问。

了解同源政策。攻击者无法读取令牌。我建议您继续阅读该主题。。。现在你似乎不明白CRSF实际上是如何工作的。(维基百科有一些例子。)你应该看一些关于CSRF和跨站点脚本(XSS)的YouTube视频。非常有帮助!“使用不同站点cookie数据的黑客”-黑客应该如何使用这些数据?用户和服务器之间是私有的。非常感谢你的解释)我不认为令牌在其他方面是随机的或唯一的。我认为令牌是恒定的,所以,我不明白它们如何在安全性方面有所帮助。)另外,前几天我进入了PHP框架Laravel代码,我现在使用它来创建使用html表单中csrf令牌机制的站点,并看到使用了一个由40个随机字符组成的字符串来生成令牌。顺便说一下,我认为随机字符串比基于IP的生成更好。因为黑客可以将链接提供给被攻击的用户,当他/她点击链接时,该操作将从用户的IP上完成,不是吗?