zoukankan      html  css  js  c++  java
  • csrf跨站请求伪造攻击,

    -csrf:跨站请求伪造攻击 (额外还有xss,sql注入攻击)

    Forbidden(403)拒绝你访问
    比如说自己写的一个html页面 ,它认为你是伪造出来的,不是网站下面的页面
    是因为你没有做csrf的判断和验证
    你看到的这条信息,因为这个网站是需要csrf的cookie,cookie为什么被需要,是因为安全的因素,被第三方黑客攻击
    
    Django解决
    在提交时候
    
    正常的页面
    <form action='/url/',method='post'>
    	{% csrf_token%}
        from:<input type='text'>
        to :<input type='text'>
        按钮
    </form>
    添加{% csrf_token %} 通过验证
    随机的生成一个cookie
    

    在settings

    -开启全局的csrf验证

    1.settings 打开'django.middleware.csrf.CsrfViewMiddleware',
    2.表单中开启csrf_token
    	<form>
        	{% csrf_token %}
            <input type='text'>
        </form>
    

    -开启局部的函数,不进行f验证

    1.settings 打开'django.middleware.csrf.CsrfViewMiddleware',
    2.在views.py 中:
    	from django.views.decoration.csrf import csrf_exempt
        @csrf_exempt
        def text(request):
            return ....
        
     如上部分函数不用进行csrf验证   
    
    

    -局部函数进行csrf验证

    1.sheetings 注释掉'django.middleware.csrf.CsrfViewMiddleware',
    2.在views.py 中:
    	from django.views.decoration.csrf import csrf_protect
        @csrf_protect
        def test(request):
            return ...
    如上,部分函数需要进行csrf进行验证
    
    

    -CBV

    from django.utils.decoratos import method_decorator
    @method_decorator(csrf_protect,name='get')
    class Test(View):
        def get(self):
            pass
        def post(self):
            pass
    

    -ajax

    将token放置在请求头里面,携带过来
    headers:{'X-CSRFToeken':token}
        
        token=$('input[name="csrfmiddlewaretoken"]').val()
        $.ajax({
            type:'post',
            url:'/test/',
            data:{'name':xxx}.
            headers:{'X-CSRFToeken':token},
            success:function(data){
                console.log(data)
            }
        })
    
  • 相关阅读:
    IDENT_CURRENT ,@@identity,SCOPE_IDENTITY() 之间对比
    移动无边框窗体
    Winform拖拽改变无边框窗体大小
    配置错误---分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
    c# winform中预防窗体重复打开
    C# TreeView 控件的综合使用方法
    c# vs2010 连接access数据库
    解决python pip缓慢
    securecrt密码获取
    linux开启telnet
  • 原文地址:https://www.cnblogs.com/zhuyuanying123--/p/11372804.html
Copyright © 2011-2022 走看看