钓鱼网站
钓鱼网站和正规网站的页面一模一样,提交网页数据的url也一样,但是会在页面中设置隐藏属性的form表单。例如转账:给用户书写的form表单,对方账号的input没有name属性,然后另外写一个具有默认的并且是隐藏的具有name属性的input框。
form表单如何通过csrf校验
为了防止此类事情的发生,我们使用csrf_token生成随机字符串
在form表单内添加:
{% csrf_token %}
browser客户端向服务端发动get请求,服务端返回给browser一串随机的字符串,当browser向服务端发送post请求时,会携带上该字符串,服务端会先对该随机字符串进行校验,如果客户端携带的字符串和服务器上的字符串一致,服务端会允许客户端提交post请求,否则会被forbidden掉。
当客户端向django服务端发送post请求,django中间件django.middleware.csrf.CsrfViewMiddleware
会获取post中携带的name为“csrfmiddlewaretoken
”的value是否和之前返回给客户端的value一致。
ajax如何通过csrf校验
第一种:自己手动获取