欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何在Django中使用csrf驗證-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何在Django中使用csrf 驗證,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

天元ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

Django 提供的 CSRF 防護機制

django 第一次響應(yīng)來自某個客戶端的請求時,會在服務(wù)器端隨機生成一個 token,把這個 token 放在 cookie 里。然后每次 POST 請求都會帶上這個 token,

這樣就能避免被 CSRF 攻擊。

1.在返回的 HTTP 響應(yīng)的 cookie 里,django 會為你添加一個 csrftoken 字段,其值為一個自動生成的 token
2.在所有的 POST 表單時,必須包含一個 csrfmiddlewaretoken 字段 (只需要在模板里加一個 tag, django 就會自動幫你生成,見下面)
3.在處理 POST 請求之前,django 會驗證這個請求的 cookie 里的 csrftoken 字段的值和提交的表單里的 csrfmiddlewaretoken 字段的值是否一樣。如果一樣,則表明這是一個合法的請求,否則,這個請求可能是來自于別人的 csrf 攻擊,返回 403 Forbidden.
4.在所有 ajax POST 請求里,添加一個 X-CSRFTOKEN header,其值為 cookie 里的 csrftoken 的值

Django 里如何使用 CSRF 防護

  • 首先,最基本的原則是:GET 請求不要用有副作用。也就是說任何處理 GET 請求的代碼對資源的訪問都一定要是“只讀“的。

  • 要啟用 django.middleware.csrf.CsrfViewMiddleware 這個中間件

  • 再次,在所有的 POST 表單元素時,需要加上一個 {% csrf_token %} tag

  • 在渲染模塊時,使用 RequestContext。RequestContext 會處理 csrf_token 這個 tag,  從而自動為表單添加一個名為 csrfmiddlewaretoken 的 input

在Django 中對csrf 的防范

Django中自帶了防止csrf攻擊的功能,但對于初學者來說可能不知道如何使用,并給自己帶來些意外的麻煩。

例如:一個正常的表單提交操作卻總是報錯。

Django 中GET請求不需要csrf認證,post請求需要正確的認證才能得到正確的返回結(jié)果。

我們先處理一下對表單提交的 csrf 驗證問題:一般在POST表單中加入{% csrf_token %}

<form method="POST" action="#">
{% csrf_token %}
  <input name='password' value='用戶密碼'>
</form>

加入了這句話后,再次提交post表單就不會出現(xiàn)問題了。

或者是另一個思路:禁用csrf 

不過這樣可能帶來的危害你自己要想清楚了。

全局禁用:settings文件中找到關(guān)于csrf的中間件,直接注釋。

針對性禁用:在表單提交的對應(yīng)視圖函數(shù)上加上一個裝飾器 @csrf_exempt

——————————————————————

{% csrf_token %} 實際上是一個模板語法,將項目的token值寫入到前端頁面的表單中,這個值在建立django項目時就已經(jīng)自動生成,可以在setting中看到。

——————————————————————–

下面再看一下Ajax調(diào)用時的處理方式

在使用 jquery 的 ajax 或者 post 之前可以加入一段 js 代碼

jQuery(document).ajaxSend(function(event, xhr, settings) {
  function getCookie(name) {
    var cookieValue = null;
    if (document.cookie && document.cookie != '') {
      var cookies = document.cookie.split(';');
      for (var i = 0; i < cookies.length; i++) {
        var cookie = jQuery.trim(cookies[i]);
        // Does this cookie string begin with the name we want?
        if (cookie.substring(0, name.length + 1) == (name + '=')) {
          cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
          break;
        }
      }
    }
    return cookieValue;
  }
  function sameOrigin(url) {
    // url could be relative or scheme relative or absolute
    var host = document.location.host; // host + port
    var protocol = document.location.protocol;
    var sr_origin = '//' + host;
    var origin = protocol + sr_origin;
    // Allow absolute or scheme relative URLs to same origin
    return (url == origin || url.slice(0, origin.length + 1) == origin + '/') ||
      (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') ||
      // or any other URL that isn't scheme relative or absolute i.e relative.
      !(/^(\/\/|http:|https:).*/.test(url));
  }
  function safeMethod(method) {
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
  }

  if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
    xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
  }
});

或者是直接在模板文件中寫入

$.ajaxSetup({
  data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});

關(guān)于如何在Django中使用csrf 驗證就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當前題目:如何在Django中使用csrf驗證-創(chuàng)新互聯(lián)
新聞來源:http://aaarwkj.com/article2/ccpeic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、標簽優(yōu)化網(wǎng)頁設(shè)計公司、企業(yè)網(wǎng)站制作面包屑導(dǎo)航、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
日本欧美亚洲一区二区三区| 国产麻豆剧传媒精品av| 中文字幕精品人妻在线| 精品国产第一区二区三区| 成年免费视频一区二区三区| av资源天堂第一区第二区第三区 | 综合久久99中文综合久久| 久久久亚洲熟妇熟女一区二区| 国产三级国产精品国产专播| 国产男女在线视频观看| 日本色小姐美国青青草原 | 亚洲一区二区三区熟妇| av国语对白在线观看| 国欧美一区二区三区| 日韩大片一区二区三区在线观看| 亚洲午夜精品一区二区久久| 国产夫妻自拍一级黄片| 日韩欧美一区精品在线观看| 下一篇亚洲一区二区三区| 高清日韩精品视频在线观看| 人人妻人人澡人人爱| 日本一区二区三区久久久| 日韩精品在线另类亚洲| 亚洲精品高清一区二区| 亚洲精品视频久久免费| 国产成人精品一二三四区| 国产原创av剧情愿望成真| 亚洲麻豆精品午夜免费| 欧美国产成人精品一区| 神马久久午夜免费福利| 日韩精品成人一区二区三区免费| 五月婷婷丁香婷婷丁香| 欧美日韩精品久久影院| 人妻的秘密一区二区三区| 清纯唯美亚洲自拍第一页| 久久亚洲一区二区麻豆偷| 欧美大片免费高清观看| 国产亚洲高清国产拍精品久久| 我的农村中年激情熟妇| 欧美日韩国产精品乱人伦| 久久国产精品必看狼人|