蒋振飞的博客 - Django框架09:CSRF   
正在加载蒋振飞的博客...
V3.0
蒋振飞的博客

Django框架09:CSRF

发布时间: 2018年07月14日 发布人: 蒋振飞 热度: 399 ℃ 评论数: 1

1.什么是csrf

    ①全称Cross Site Request Forgery,跨站请求伪造
    ②某些恶意网站上包含链接、表单按钮或者JavaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站攻击

2.防csrf的使用

    在django的模板中,提供了防止跨站攻击的方法,使用步骤如下:
        ①step1:在settings.py中启用'django.middleware.csrf.CsrfViewMiddleware'中间件,此项在创建项目时,默认被启用
        ②step2:在csrf1.html中添加标签

{% csrf_token %}

3.取消保护

    如果某些视图不需要保护,可以使用装饰器csrf_exempt,模板中也不需要写标签,修改csrf2的视图如下:

@csrf_exempt
def csrf2(request):
    uname=request.POST['uname']
    return render(request,'booktest/csrf2.html',{'uname':uname})

4.保护原理

    加入标签后,可以查看源代码,发现多了如下代码

<input type='hidden' name='csrfmiddlewaretoken' value='nGjAB3Md9ZSb4NmG1sXDolPmh3bR2g59' />

    ①在浏览器的调试工具中,通过network标签可以查看cookie信息
    ②查看跨站的信息,并没有cookie信息,即使加入上面的隐藏域代码,发现又可以访问了
    ③结论:django的csrf不是完全的安全
    ④当提交请求时,中间件'django.middleware.csrf.CsrfViewMiddleware'会对提交的cookie及隐藏域的内容进行验证,如果失败则返回403错误

打赏 蒋振飞

取消

感谢您的支持,我会继续努力的!

扫码支持
一分也是爱     一块不嫌多

点击 支付宝 或 微信 打赏蒋振飞

打开支付宝扫一扫,即可进行扫码打赏哦

评论列表