django – 什么是CSRF令牌?它的重要性是什么,它是如何工作的?

好吧,我写了一个Django应用程序,我只想知道什么是一个csrf令牌是什么,以及它如何保护数据。如果你不使用csrf令牌是post数据不安全?

我知道如何使用csrf_token但我只是需要一些信息如何工作。

最佳答案
跨站点请求伪造(CSRF)用简单的话

>假设您当前通过www.mybank.com登录您的网上银行
>假设从mybank.com汇款将导致(概念上)http://www.mybank.com/transfer?to=\u0026lt;SomeAccountnumber\u0026gt;;amount=\u0026lt;SomeAmount\u0026gt;的请求。 (您的帐号不需要,因为您的登录信息隐含了您的帐号。)
>您访问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令牌:

>使用第三个参数扩展传输请求:http://www.mybank.com/transfer?to=123456;amount=10000;token=31415926535897932384626433832795028841971。
>这个令牌是一个巨大的,不可能的猜测的随机数,mybank.com将它们包含在自己的网页上,当他们服务给你。每次他们向任何人提供任何页面时,它是不同的。
>攻击者无法猜测令牌,无法说服您的网络浏览器投降(如果浏览器正常工作…),因此攻击者将无法创建有效的请求,因为请求错误的令牌(或无令牌)将被www.mybank.com拒绝。

结果:您保留10000个货币单位。我建议你捐赠一些维基百科。

(你的旅费可能会改变。)

转载注明原文:django – 什么是CSRF令牌?它的重要性是什么,它是如何工作的? - 代码日志