• Django中csrf错误


    CSRF(Cross-site request forgery)跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

    尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

    与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

    Django 中自带了 防止CSRF攻击的功能,但是一些新手不知道如何使用,给自己编程带来了麻烦。

    GET 请求不需要 CSRF 认证,POST 请求需要正确认证才能得到正确的返回结果。一般在POST表单中加入 {% csrf_token %}

    <form method="POST" action="/post-url/">
        {% csrf_token %}
         
        <input name='lh' value="提交">
    </form>

    如果使用Ajax调用的时候,就要麻烦一些。(一般错误显示为403错误)

    需要在模板文件中添加以下内容:

    <script src="/static/js/jquery.cookie.js"></script>   #需要引用jquery.cookie.js(自己下载),下面要调用cookie
    
    <script>
    //ajax csrf设置
      var csrftoken = $.cookie('csrftoken');
      function csrfSafeMethod(method) {
         // these HTTP methods do not require CSRF protection
          return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
       }
    $.ajaxSetup({ beforeSend: function(xhr, settings) {   
    if (!csrfSafeMethod(settings.type) && !this.crossDomain) {   xhr.setRequestHeader("X-CSRFToken", csrftoken); } } }); </script>
  • 相关阅读:
    第二次实验课总结
    第一次实验课总结
    文件操作
    事件监听 计算器界面
    个人信息
    学生成绩管理
    银行管理
    类的抽象与封装
    求最大公约数和最小公倍数
    阶乘
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5888624.html
Copyright © 2020-2023  润新知