欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django跨域請求CSRF的方法示例

 更新時間:2018年11月11日 15:04:15   作者:森林嶼麓  
這篇文章主要介紹了Django跨域請求CSRF的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

web跨域請求

1.為什么要有跨域限制

舉個例子:

1.用戶登錄了自己的銀行頁面 http://mybank.com,http://mybank.com向用戶的cookie中添加用戶標(biāo)識。
2.用戶瀏覽了惡意頁面 http://evil.com。執(zhí)行了頁面中的惡意AJAX請求代碼。
3.http://evil.com向http://mybank.com發(fā)起AJAX HTTP請求,請求會默認(rèn)把http://mybank.com對應(yīng)cookie也同時發(fā)送過去。
4.銀行頁面從發(fā)送的cookie中提取用戶標(biāo)識,驗證用戶無誤,response中返回請求數(shù)據(jù)。此時數(shù)據(jù)就泄露了。
5.而且由于Ajax在后臺執(zhí)行,用戶無法感知這一過程。

以上就是所謂是CSRF(Cross-site request forgery)攻擊,跨站請求偽造。接下來說一下 Django中處理csrf的方式

正常情況下直接發(fā)起一個psot請求,會報錯。錯誤的意思是csrf校驗失敗,request請求被丟棄掉。

那么在django中的post失敗有兩種解決辦法:

解決辦法一:將csrf中間層注釋掉

MIDDLEWARE = [
 
  'django.middleware.security.SecurityMiddleware',
 
  'django.contrib.sessions.middleware.SessionMiddleware',
 
  'django.middleware.common.CommonMiddleware',
 
#  'django.middleware.csrf.CsrfViewMiddleware',
 
  'django.contrib.auth.middleware.AuthenticationMiddleware',
 
  'django.contrib.messages.middleware.MessageMiddleware',
 
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
 
]

此時將不會進(jìn)行csrf的校驗,但如前面所述,這是一種不安全的行為。而且djano也不推薦使用

解決辦法二:

在前面的提示中有這樣一句話:

<form action="" method="post">{% csrf_token %}

也就是說在網(wǎng)頁中加入csrf_token的標(biāo)簽就可以通過csrf校驗

Django 提供的 CSRF 防護(hù)機(jī)制:

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

2、在返回的 HTTP 響應(yīng)的 cookie 里,django 會為你添加一個 csrftoken 字段,其值為一個自動生成的 token,在所有的 POST 表單時,必須包含一個 csrfmiddlewaretoken 字段 (只需要在模板里加一個 tag, django 就會自動幫你生成,見下面)

3、在處理 POST 請求之前,django 會驗證這個請求的 cookie 里的 csrftoken 字段的值和提交的表單里的 csrfmiddlewaretoken 字段的值是否一樣。如果一樣,則表明這是一個合法的請求,否則,這個請求可能是來自于別人的 csrf 攻擊,返回 403 Forbidden.

4、在所有 ajax POST 請求里,添加一個 X-CSRFTOKEN header,其值為 cookie 里的 csrftoken 的值

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python+pandas生成指定日期和重采樣的方法

    python+pandas生成指定日期和重采樣的方法

    下面小編就為大家分享一篇python+pandas生成指定日期和重采樣的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 基于Python實現(xiàn)wifi連接小程序

    基于Python實現(xiàn)wifi連接小程序

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語言編寫一個簡單的連接Wi-Fi的程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Python編程利用Numpy和PIL庫將圖片轉(zhuǎn)化為手繪

    Python編程利用Numpy和PIL庫將圖片轉(zhuǎn)化為手繪

    這篇文章主要介紹了Python編程利用Numpy和PIL庫將一張圖片轉(zhuǎn)化為手繪風(fēng)格,文中附含詳細(xì)實現(xiàn)的示例代碼,有需要的朋友可以借鑒參考下
    2021-09-09
  • python文件名批量重命名腳本實例代碼

    python文件名批量重命名腳本實例代碼

    這篇文章主要給大家介紹了關(guān)于python文件名批量重命名腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Pyecharts繪制可視化地球?qū)崿F(xiàn)示例

    Pyecharts繪制可視化地球?qū)崿F(xiàn)示例

    這篇文章主要為大家介紹了Pyecharts繪制可視化地球?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Python Django模板系統(tǒng)詳解

    Python Django模板系統(tǒng)詳解

    這篇文章主要介紹Django模板系統(tǒng)Django模板系統(tǒng)的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • 利用Python實現(xiàn)繪制論文中的曲線圖

    利用Python實現(xiàn)繪制論文中的曲線圖

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實現(xiàn)繪制論文中需要的曲線圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • pytorch常用函數(shù)定義及resnet模型修改實例

    pytorch常用函數(shù)定義及resnet模型修改實例

    這篇文章主要為大家介紹了pytorch常用函數(shù)定義及resnet模型修改實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python利用fastapi實現(xiàn)上傳文件

    Python利用fastapi實現(xiàn)上傳文件

    FastAPI是一個現(xiàn)代的,快速(高性能)python?web框架。本文將利用fastapi實現(xiàn)上傳文件功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06
  • Python爬蟲基礎(chǔ)之簡單說一下scrapy的框架結(jié)構(gòu)

    Python爬蟲基礎(chǔ)之簡單說一下scrapy的框架結(jié)構(gòu)

    今天給大家?guī)淼氖顷P(guān)于Python爬蟲的相關(guān)知識,文章圍繞著scrapy的框架結(jié)構(gòu)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論