zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    ros之MarkerArray使用
    boost之进度条工具
    opencv之对比度和亮度的调节
    opencv之通道分离和合并
    opencv之图像叠加与图像混合
    opencv之绘制基本图形
    opencv之几种常用的类型
    opencv之cv::Mat创建
    ros之自定义message
    opencv与eigen类型转换
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5888624.html
Copyright © 2011-2022 走看看