zoukankan      html  css  js  c++  java
  • XSS CSRF攻击

    网页攻击

    Xss攻击

    1、原理

      xss攻击为跨站脚本攻击,主要原因是用户输入的内容不可控形式为在别人的评论区,

      或者留言板写入js代码并且提交,如果我们不添加防护措施,就会造成,输入的

      js代码会被浏览器解析执行,从而让别人获取到我们浏览器中的信息

    2、代码

      django中是默认有xss保护的,

      如果我们想要取消xss保护,通关 管道符 加上 safe

      前端接收参数  {{ page_info | safe }}

      后端直接传入js代码, 就可以被浏览器解析执行

    CSRF攻击

      csrf攻击为跨站伪造攻击

      当我们访问了不受信任的网站时,某一个图片或者连接很有可能会将我们

      浏览器的一些信息发送到黑客的电脑上,然后他们伪造我们去一些受信任的

      网站对我们的账号进行一些操作(可以轻松拿到我们的cookie)

    由此可见,普通的cookie验证防护不了这种csrf攻击,因此我们通过服务器给浏览器发送

    一个token字符串进行认证

    1、开启csrf验证Djan配置中开启CSRF中间件

    'django.middleware.csrf.CsrfViewMiddleware',

    b. 前端表单中开启csrf_token

    <form action="">
        {% csrf_token %}
        <input type="text">
    

    2、当我们开启csrf认证后,想要让部分业务逻辑关闭csrf认证 

    from django.views.decorators.csrf import csrf_exempt
    # 先导入csrf_exempt
    @csrf_exempt
    def test2(request):
        pass

      这样即便开启了全局csrf认证,也能通过装饰器关闭test2的csrf认证

    3、当我们关闭csrf认证后,想要让部分业务逻辑开启csrf认证

    from django.views.decorators.csrf import csrf_protect
    # csrf_protect
    @csrf_protect
    def test2(request):
        pass

    4、CBV装饰器的使用

      我们上面演示的都是FBV,如果是CBV

    from django.views.decorators.csrf import csrf_protect,csrf_exempt
    from django.utils.decorators import method_decorator
    #csrf_protect 表示关闭的全局csrf认证, 开启部分csrf认证
    #csrf_exempt 表示开启全局csrf认证, 关闭部分csrf认证
    # name  表示只使用于某种提交的方式
    @method_decorator(csrf_exempt,name="get")
    class Test(object):
        def get(self):
            pass
        def post(self):
            pass

    5、ajax提交token的方式

    <script>
    {#    首先我们要获取到token#}
    {#通过属性选择器找到存放token值的标签  $("input[name='csrfmiddlewaretoken']") #}
        csrf_token = $("input[name='csrfmiddlewaretoken']").val();
        $.ajax({
            type:"post",
            url:"/test2/",
            {#token放在headers中提交过去,并且headers里面的key时固定的#}
            headers:{"X-CSRFToken":csrf_token},
            success:function () {
            }
        })
    </script>
  • 相关阅读:
    HDU 2121 Ice_cream’s world II 不定根最小树形图
    POJ 3164 Command Network 最小树形图
    POJ 3723 Conscription 最小生成树
    UVA 1175 Ladies' Choice 稳定婚姻问题
    BZOJ 2753 [SCOI2012] 滑雪和时间胶囊 最小生成树
    BZOJ 1854: [Scoi2010]游戏 无向图判环
    HDU 3974 Assign the task 暴力/线段树
    Codeforces Round #302 (Div. 2) D. Destroying Roads 最短路
    uoj 67 新年的毒瘤 割点
    蓝桥
  • 原文地址:https://www.cnblogs.com/huikejie/p/11213284.html
Copyright © 2011-2022 走看看