CSRF Token 的设计是否有其必要性?

CSRFToken确实会对网站安全起到一些积极作用,但我想讨论CSRFToken对于一个网站是否是必要的。
例如如果已经要求所有非幂等的请求都用POST方法提交,是否CSRFToken就不必要了呢?
CSRF和CORS的关系又是怎样的呢?
感谢大家的回答,我已经理解了这个问题,我也惊讶于我对这个问题的理解一直以来都是错误的。但我觉得对于我的疑问,大家的回答都不是很恰当,因此我自己来回答一下这个问题。
我之前错误的理解是「form和XHR发起的POST请求都受到CORS的限制,因此只要非幂等请求不是GET,就可以防范CSRF」,而我今天才发现,原来form发起的POST请求并不受到CORS的限制,因此可以任意地使用其他域的Cookie向其他域发送POST请求,形成CSRF攻击。
我还针对这个问题请教了@c4605,他对防御CSRF提出了两种解决方案:
在每个表单中包含一个CSRFToken.
不将用于认证的Token或SeesionID储存在Cookie中,而是将其储存在localStorage中,在每次发起请求时手动将Token添加到请求中。
其中我比较偏好第二种解决方案,似乎各位并没有提到,因此在这里与大家分享一下。
补充一份资料:http://www.jongleberry.com/understanding-csrf.html
DIEA
浏览 465回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript