python Djanjo csrf說明與配置

来源:https://www.cnblogs.com/love2000/archive/2019/11/18/11680069.html
-Advertisement-
Play Games

Django csrf CSRF 全稱(Cross Site Request Forgery)跨站請求偽造。也被稱為One Click Attack和Session Riding,通常縮寫為CSRF或XSRF。你可以這樣理解:攻擊者(黑客,釣魚網站)盜用了你的身份,以你的 名義發送惡意請求,這些請求 ...


 Django csrf 

CSRF 全稱(Cross Site Request Forgery)跨站請求偽造。也被稱為One Click Attack和Session Riding,通常縮寫為CSRF或XSRF。你可以這樣理解:攻擊者(黑客,釣魚網站)盜用了你的身份,以你的 名義發送惡意請求,這些請求包括發送郵件、發送信息、盜用賬號、購買商品、銀行轉賬,從而使你的個人隱私泄露和財產損失。

CSRF原理

1、用戶登錄並信任網站A
2、驗證通過,在用戶處產生A的Cookie
3、用戶在沒有登出網站A的情況下,訪問危險網站B
4、網站B要求訪問第三站點網站A,發出一個request
5、根據網站B的請求,瀏覽器帶著網站A產生的Cookie訪問網站A
6、網站A不知道請求是用戶發出的還是網站B發出的,由於瀏覽器會自動帶上用戶Cookie,所以網站A會根據用戶的許可權處理請求,這樣網站B就達到了模擬用戶操作的目的

從上面步驟中可以看出,要完成一次CSRF攻擊,受害者必須依次完成以下兩個步驟:

登錄受信任網站A,併在本地生成Cookie
在不登出A的情況下,訪問危險網站B
看到這裡,你也許會問:如果我不滿足以上兩個條件中的一個,我就不會受到CSRF攻擊。是的,確實如此,但是你不能保證以下情況不會發生

你不能保證你登錄了一個網站之後,不再打開一個tab頁面並訪問其他的網站
你不能保證你關閉瀏覽器之後,你本地的Cookie會立刻過期,你上次的會話已經結束
上述中所謂的攻擊網站,可能就是一個釣魚網站

CSRF攻擊實例
聽了這麼多,可能大家還雲里霧裡,光聽概念可能大家對於CSRF還是不夠瞭解,下麵我將舉一個例子來讓大家對CSRF有一個更深層次的理解。

我們先假設支付寶存在CSRF漏洞,我的支付寶賬號是wl,攻擊者的支付寶賬戶是xxx,然後我們通過網頁請求的方式 http://zhifubao.com/withdraw?account=lyq&amount=10000&for=wl 可以把賬號的wl的10000元轉到我的另外一個 賬戶wl上面去。通常這個情況下,該請求發送到支付寶伺服器後,伺服器會先驗證請求是否來自一個合法的session,並且該session的用戶已經成功登錄。攻擊者在支付寶也有賬戶xxx,他直到上文中的URL可以進行轉賬操作,於是他自己可以發送一個請求 http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx 到支付寶後臺。但是這個請求是來自攻擊者而不是我wl,所以不能通過安全認證,因此該請求作廢。這時,攻擊者xxx想到了用CSRF的方式,他自己做了個網站,在網站中放瞭如下代碼:http://zhifubao.com/withdraw?account=lyq&amount=10000&for=xxx ,並且通過網站鏈接誘使我來訪問他的網站。當我禁不住誘惑時就會點了進去,上述請求就會從我自己的瀏覽器發送到支付寶,而且這個請求會附帶我的瀏覽器中的cookie。大多數情況下,該請求會失敗,因為支付寶要求我的認證信息,但是我如果剛訪問支付寶不久,還沒有關閉支付寶頁面,我的瀏覽器中的cookie存有我的認證信息,這個請求就會得到響應,從我的賬戶中轉10000元到xxx賬戶里,而我絲毫不知情。

進入settings.py找到  MIDDLEWARE  這個列表找到    'django.middleware.csrf.CsrfViewMiddleware',  這個欄位

這一行設置csrf的如果把它註釋掉csrf將失效

 

現在我在django寫了一個HTML表單當我點擊提交的時候會變為提交方式會變為POST然後就會發現報了一個  403 的csrf錯誤

這是因為django的防護功能    因沒有提供Referer值而被誤認為CSRF攻擊,拒絕訪問 怎麼解決這個問題呢?

 

 

可以在form表單下麵加上    {%csrf_token%}     當你檢查的時候就會發現多了一個input數據 這是  {%csrf_token%}  自動轉化的數據提供瀏覽器進行確認

如果成功就可以正常訪問錯誤則拒絕訪問

然後你就會發現跳轉頁面的時候訪問成功了

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要瞭解了在Linux環境下安裝MySQL後的配置文件的位置,以及如何創建配置文件。 ...
  • 未提交讀:讀尚未提交的數據 已提交讀:讀取已經提交的數據(oracle預設) 可重覆讀:保證同一事務多次讀取同樣記錄的結果一致(MySQL預設) 串列化:每次讀取都獲得表級共用鎖,讀寫相互阻塞 ...
  • https://blog.csdn.net/vivianXuejun/article/details/78809655 https://www.bt.cn/bbs/forum.php?mod=viewthread&tid=20728 ...
  • mssql資料庫的主鍵約束中,主鍵名查詢: 修改主鍵名稱的方法: ...
  • 【關閉集群順序】1.使用crs_stat 命令查詢RAC節點的服務狀態是否正常[grid@ora01sh ~]$ crs_stat -t -v2.使用srvctl (service control)命令依次關閉集群服務關閉順序:關閉資料庫(實例)-->關閉ASM實例-->關閉節點服務1)關閉資料庫[ ...
  • Redis 是一款比較常用的 NoSQL 資料庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠相容絕大部分的 POSIX 系統,例如 Linux、OS X 等,但是很遺憾不支持在 Windows 上安裝, ...
  • 資料庫 資料庫就是存儲和管理數據的倉庫,用戶可以對資料庫中的數據進行增刪改查等操作。 資料庫的分類 關係型資料庫(Oracle、MySQL、SQLite等) 非關係型資料庫(Redis、MongoDB等) MySQL簡介 MySQL是一個關係型資料庫,由MySQLAB公司開發,目前屬於Oracle旗 ...
  • 原因是在使用<if> 進行條件判斷時, 將datetime類型的欄位與 ' ' 進行了判斷,導致的錯誤 解決, 只使用 <if test="createTime != null"></if> 做判斷就行了 詳細可參考: https://blog.csdn.net/wanghailong_qd/art ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...