作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个应用程序(Django,确实如此),我只想了解“CSRF token ”实际上是什么以及它如何保护数据。
如果不使用CSRF token ,发布数据不安全吗?
最佳答案
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
。mybank.com
在向您提供该 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 fromwww.mybank.com
because of HTTP access control. This note is important for some people who unreasonably send a headerAccess-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/
我是一名优秀的程序员,十分优秀!