django csfr中间键
Posted yanhonghong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django csfr中间键相关的知识,希望对你有一定的参考价值。
大家好,今天给大家介绍一下,csrf
CSRF(cross-site reuqest forgery):别人以你的身份向网站发送请求。
实例场景:假如说,你现在打开了某个银行网站,然后浏览器突然,出现一个美女图片,处于好奇,你点击图片,而图片是一个转账的超链接,想想这后果,是不是色字头上有把刀、、、
分析:当你打开银行网站登录之后,银行网站会返回浏览器一些cookie,sessionID,你在银行网站上进行操作时候,网站是通过这些cookie,和sessionID来判断用户是否登录,以及是哪个用户操作,当点击图片时候,图片是个转账的超链接,点击图片实质是向网站发送转账请求,这是会携带cookie 和sessionID进行验证,从而进行转账,而这,就是别人以你的名义操作,就是csrf
在django框架中,为了解决这个问题,设置有 ‘django.middleware.csrf.CsrfViewMiddleware‘, 这个中间件。它的作用是,当发送post请求时候,会验证token。token就是令牌。在表单中加入%csrf_token%
当你在一个有表单的页面时候,检查网页源代码会有:
<input type=‘hidden‘ name=‘csrfmiddlewaretoken‘ value=‘LzK9a3nThYyjVrZgCZAip9piQ6zMzUGwpuwDbSYDxZmu9D6bU1CqmNX5zSJ31RGt‘ />
当你提交表单时候,服务端会验证这个 value,而这个别人一般猜不到,从而能后避免csrf攻击。
大家在刚开始学习django时候,有时候不需要中间件验证,则可以在setting.py中注释掉中间价,或者在视图函数加上装饰器:@csrf_exempt,这样就不会进行csrf中间件验证了。
以上是关于django csfr中间键的主要内容,如果未能解决你的问题,请参考以下文章