对CSRF
的理解:
假定a是一个银行网站, b是一个危险网站. 当用户在访问a, 并且session并未结束的情况下, 去访问b网站, b网站就可以通过隐藏的url或者是表单来伪造用户对a的get或者post操作.
对CSRF
的防范:
在用户登陆网站时, 在session
中设置一个随机数(csrf_token).
- 在用户打开敏感请求页面时, 在
form
中添加一个隐藏的隐藏的字段, 例:
<input type="hidden" name="csrf_token" value="<? php $_SESSION['csrf_token'] ?>">
- 如果用户通过AJAX进行敏感请求, 则需要在用户的jQuery ajax中统一设置
csrf_token
这样的话, 网站b伪造的请求就不会有这个隐藏字段, 就会被识破