gpt4 book ai didi

csrf - 什么是 CSRF 代币?它的重要性是什么?它是如何运作的?

转载 作者:行者123 更新时间:2023-12-03 03:54:04 31 4
gpt4 key购买 nike

我正在编写一个应用程序(Django,确实如此),我只想了解“CSRF token ”实际上是什么以及它如何保护数据。

如果不使用CSRF token ,发布数据不安全吗?

最佳答案

简单来说跨站请求伪造 (CSRF)

  • 假设您当前已通过 www.mybank.com 登录网上银行
  • 假设从 mybank.com 进行转账将产生(概念上)http://www.mybank.com/transfer?to=<SomeAccountnumber>;amount=<SomeAmount> 形式的请求。 (不需要您的帐号,因为您的登录暗示了它。)
  • 您访问 www.cute-cat-pictures.org 时并不知道它是一个恶意网站。
  • 如果该网站的所有者知道上述请求的形式(简单!)并正确猜测您已登录 mybank.com(需要一些运气!),他们可以在其页面上包含类似 http://www.mybank.com/transfer?to=123456;amount=10000 的请求(其中 123456 是他们的开曼群岛帐户号码和 10000 是您之前很高兴拥有的金额)。
  • 检索了 www.cute-cat-pictures.org 页面,因此您的浏览器将发出该请求。
  • 您的银行无法识别该请求的来源:您的网络浏览器将发送该请求以及您的 www.mybank.com cookie,它看起来完全合法。你的钱不见了!

这是没有 CSRF 代币的世界。

现在使用 CSRF token 来实现更好的:

  • 传输请求使用第三个参数进行扩展:http://www.mybank.com/transfer?to=123456;amount=10000;token=31415926535897932384626433832795028841971
  • 该 token 是一个巨大的、无法猜测的随机数,mybank.com 在向您提供该 token 时会将其包含在自己的网页上。每次他们向任何人提供任何页面时,情况都是不同的。
  • 攻击者无法猜测 token ,无法说服您的网络浏览器交出它(如果浏览器工作正常......),因此攻击者将无法创建有效的请求,因为带有错误 token (或没有 token )的请求将被 www.mybank.com 拒绝。

结果:您保留 10000 货币单位。

(您的里程可能会有所不同。)

comment worth reading 编辑 SOFe:

It would be worthy to note that script from www.cute-cat-pictures.org normally does not have access to your anti-CSRF token from www.mybank.com because of HTTP access control. This note is important for some people who unreasonably send a header Access-Control-Allow-Origin: * for every website response without knowing what it is for, just because they can't use the API from another website.

关于csrf - 什么是 CSRF 代币?它的重要性是什么?它是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5207160/

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