Python web-Django CSRF跨站请求伪造防护( 三 )

全局保护:直接启用中间件就可以了 。

局部保护:from django.views.decorators.csrf import csrf_exemptcsrf_protect , 使用装饰器进行验证 。 csrf_protect:为当前函数强制设置防跨站请求伪造功能 , 即便settings中没有设置全局中间件;csrf_exempt:取消当前函数防跨站请求伪造功能 , 即便settings中设置了全局中间件 。


验证

在POST请求提交数据的时候 , django会去检查是否有一个csrf的随机字符串 , 如果没有就会返回403没有权限访问 。

表单验证

在form表单里面需要添加{%csrf_token% , Django会自动渲染隐藏的input输入框:

<input type="hidden" name="csrfmiddlewaretoken" value=https://mparticle.uc.cn/api/"2Sb0DQwDVgOQ8i3n1BaG1MUPLEYr6ZGaCLYa14maOQM0Ami5ddQOR6hfXuD2mrmA">

在表单提交的时候 , 中间件会验证csrfmiddlewaretoken 。

通过ajax提交

推荐阅读