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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...