web安全:跨站請求偽造 (CSRF)

跨站請求偽造 (CSRF)

? 跨站請求偽造(CSRF,Cross-Site Request Forgery) 是一種網絡攻擊方式,攻擊者誘使受害者在未經其授權的情況下執行特定操作。CSRF 利用受害者已登錄的身份和瀏覽器自動發送的認證信息(如 Cookie)來冒充受害者,發起未經授權的請求。此攻擊通常會導致嚴重的安全問題,特別是在銀行、電子商務和社交網絡等網站上。


CSRF 攻擊的工作原理

銀行轉賬操作案例

  1. 用戶登錄銀行網站
    用戶訪問銀行網站并登錄,提交登錄憑據后,銀行生成會話 Cookie 并存儲在瀏覽器中:

    Cookie: JSESSIONID=randomid
    

    用戶在登錄后未注銷,瀏覽器保存此 Cookie 用于后續的認證。

  2. 銀行提供的合法轉賬表單
    銀行網站的轉賬表單如下:

    <form method="post" action="https://bank.example.com/transfer"><input type="text" name="amount" placeholder="Amount" /><input type="text" name="routingNumber" placeholder="Routing Number" /><input type="text" name="account" placeholder="Account Number" /><input type="submit" value="Transfer" />
    </form>
    

    用戶提交數據后,瀏覽器發送如下請求:

    POST /transfer HTTP/1.1
    Host: bank.example.com
    Cookie: JSESSIONID=randomid
    Content-Type: application/x-www-form-urlencodedamount=200&routingNumber=1234&account=5678
    
  3. 攻擊者設置陷阱
    攻擊者創建了一個惡意網站,并設計了一段 HTML 代碼模擬銀行的轉賬操作:

    <form method="post" action="https://bank.example.com/transfer"><input type="hidden" name="amount" value="500" /><input type="hidden" name="routingNumber" value="attackerRouting" /><input type="hidden" name="account" value="attackerAccount" /><input type="submit" value="Click to Claim Prize" />
    </form>
    

    攻擊者誘使用戶訪問該頁面,用戶無意間點擊了提交按鈕,觸發請求。

  4. 后果
    瀏覽器發送以下請求到銀行服務器:

    POST /transfer HTTP/1.1
    Host: bank.example.com
    Cookie: JSESSIONID=randomid
    Content-Type: application/x-www-form-urlencodedamount=500&routingNumber=attackerRouting&account=attackerAccount
    

    銀行服務器因為依賴 Cookie 自動認證,誤以為是用戶本人發起的合法操作,將資金轉入攻擊者賬戶


CSRF 的核心特點

  1. 自動發送憑據
    瀏覽器會自動攜帶與目標網站相關的 Cookie 和其他認證信息。
  2. 用戶無感知
    用戶通常不會察覺攻擊的發生,因為它可能嵌入在正常網頁或隱藏的代碼中。
  3. 利用受信任身份
    服務器將受害者的身份視為合法,因此執行攻擊者設計的操作。

CSRF 攻擊的危害

  1. 資金損失:攻擊者可通過偽造請求進行轉賬或支付操作。
  2. 數據篡改:攻擊者可修改用戶數據,如更改密碼、郵箱等。
  3. 賬戶劫持:攻擊者可利用 CSRF 攻擊獲取用戶權限,進一步控制賬戶。
  4. 服務濫用:攻擊者可利用受害者的身份執行惡意操作,如發送垃圾郵件或發起 DDoS 攻擊。

防范 CSRF 攻擊的方法

1. 使用 CSRF Token

  • 在表單或請求中添加一個隨機生成的 Token,服務器驗證該 Token 是否匹配。

  • 示例:

    <form method="post" action="/transfer"><input type="hidden" name="csrf_token" value="randomly_generated_token" /><input type="text" name="amount" /><input type="submit" value="Transfer" />
    </form>
    

2. 驗證請求來源

  • 檢查 RefererOrigin 頭部,確保請求來自合法的源。

  • 示例:

    Referer: https://bank.example.com
    Origin: https://bank.example.com
    

3. 使用 SameSite Cookie

  • 設置 Cookie 的 SameSite 屬性為 StrictLax,防止跨站請求攜帶 Cookie。

  • 示例:

    Set-Cookie: JSESSIONID=randomid; SameSite=Strict
    

4. 限制安全方法

  • 確保安全方法(如 GETHEADOPTIONS)是只讀的,不用于修改數據。
  • 示例:
    • 使用 POSTPUT 方法執行寫操作。
    • 避免使用 GET 方法執行敏感操作。

5. 雙重認證

  • 對敏感操作(如轉賬、修改密碼)要求用戶進行雙重認證,例如輸入短信驗證碼。

6. 定期安全測試

  • 使用自動化工具(如 OWASP ZAP)進行安全測試,檢查是否存在 CSRF 漏洞。

其他防護建議

  1. 避免直接使用 GET 方法進行狀態改變:避免使用 GET 請求來執行會影響服務器狀態的操作,例如提交表單、修改數據等。始終使用 POST 方法來進行更改操作。
  2. 對應用進行安全審計和滲透測試:定期進行 CSRF 漏洞檢測,包括使用自動化工具(如 OWASP ZAP)進行測試,確保應用程序沒有 CSRF 漏洞。
  3. 教育用戶:雖然大部分防護措施都在技術層面,但用戶教育也很重要。提醒用戶不要隨便點擊未知網站的鏈接或填寫不明網站的表單。

擴展閱讀

  • OWASP CSRF Prevention Cheat Sheet
  • 《Web應用程序安全權威指南》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896073.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896073.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896073.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端ES面試題及參考答案

目錄 let/const 與 var 的區別?TDZ 是什么? 箭頭函數與普通函數的區別?箭頭函數能否作為構造函數? 模板字符串的嵌套表達式和標簽模板用法? 解構賦值的應用場景及對象 / 數組解構差異? 函數參數默認值的生效條件及暫時性死區問題? 展開運算符(...)在數組 / 對象中…

Windows 圖形顯示驅動開發-查詢 WDDM(3.2) 功能支持和啟用

查詢 Windows 顯示驅動程序模型 (WDDM) 功能的支持和啟用。 其中介紹了&#xff1a; 用戶模式和內核模式顯示驅動程序&#xff08;UMD 和 KMD&#xff09;如何查詢 OS&#xff0c;以確定 WDDM 功能在系統上是否受支持和已啟用。 OS 如何確定驅動程序是否支持特定的 WDDM 功能…

MySQL InnoDB 存儲引擎的索引詳解

在 MySQL 中&#xff0c;InnoDB 是最常用的存儲引擎&#xff0c;它支持事務、行級鎖和外鍵約束等功能&#xff0c;而索引則是提升數據庫查詢性能的關鍵。在 InnoDB 存儲引擎中&#xff0c;索引不僅僅是提高查詢速度的工具&#xff0c;還是數據庫的核心組成部分之一。本文將詳細…

基于Spring Boot的RabbitMQ延時隊列技術實現

文章目錄 基于Spring Boot的RabbitMQ延時隊列技術實現延時隊列應用場景基本概念實現延時隊列添加依賴基礎配置配置類設計消息生產者消息消費者 兩種TTL設置方式 訂單超時關閉實例訂單服務消息處理 延遲消息插件安裝插件配置延遲交換機 基于Spring Boot的RabbitMQ延時隊列技術實…

畢業項目推薦:基于yolov8/yolov5/yolo11的番茄成熟度檢測識別系統(python+卷積神經網絡)

文章目錄 概要一、整體資源介紹技術要點功能展示&#xff1a;功能1 支持單張圖片識別功能2 支持遍歷文件夾識別功能3 支持識別視頻文件功能4 支持攝像頭識別功能5 支持結果文件導出&#xff08;xls格式&#xff09;功能6 支持切換檢測到的目標查看 二、數據集三、算法介紹1. YO…

【智能客服】ChatGPT大模型話術優化落地方案

本文原創作者:姚瑞南 AI-agent 大模型運營專家,先后任職于美團、獵聘等中大廠AI訓練專家和智能運營專家崗;多年人工智能行業智能產品運營及大模型落地經驗,擁有AI外呼方向國家專利與PMP項目管理證書。(轉載需經授權) 目錄 一、項目背景 1.1 行業背景 1.2 業務現…

STM32的HAL庫開發---單通道ADC采集(DMA讀取)實驗

一、實驗簡介 正常單通道ADC采集順序是先開啟ADC采集&#xff0c;然后等待ADC轉換完成&#xff0c;也就是判斷EOC位置1&#xff0c;然后再讀取數據寄存器的值。 如果配置了DMA功能&#xff0c;在EOC位被硬件置1后&#xff0c;自動產生DMA請求&#xff0c;然后DMA進行數據搬運…

編譯原理基礎(1)

1.什么是ASCII碼&#xff1f; ASCII碼即美國信息交換標準代碼&#xff0c;是基于拉丁字母的電腦編碼系統&#xff0c;用于顯示現代英語和部分西歐語言。其7位編碼范圍0-127&#xff0c;8位擴展到0-255。字符集含控制字符&#xff08;0-31、127&#xff0c;用于控制設備或表示通…

基于 Highcharts 實現 Vue 中的答題統計柱狀圖組件

在現代 Web 開發中&#xff0c;數據可視化是一個重要的組成部分&#xff0c;而 Highcharts 是一個廣泛使用的 JavaScript 圖表庫&#xff0c;可以幫助開發者在 Web 頁面上輕松地繪制豐富的圖表。在本文中&#xff0c;我們將基于 Highcharts 創建一個用于答題統計的柱狀圖&#…

SQLAlchemyError: A transaction is already begun on this Session.

資料 sqlalchemy 事務 - 簡書 在 SQLAlchemy 中&#xff0c;事務是通過會話來管理的。當你開始一個事務&#xff08;例如使用 async with db.begin()&#xff09;&#xff0c;它會開啟一個新的事務&#xff0c;并在事務塊結束時自動提交或回滾。如果在同一個會話中&#xff0c…

Java Web開發實戰與項目——Spring Boot與Redis實現緩存管理

緩存技術在現代Web開發中至關重要&#xff0c;尤其是在高并發的環境中&#xff0c;緩存能夠有效減少數據庫訪問壓力、提高系統性能。Redis作為最流行的內存數據存儲系統之一&#xff0c;常用于緩存管理。本節將講解如何在Spring Boot項目中集成Redis&#xff0c;實現緩存管理&a…

C語言學習【1】C語言關于寄存器的封裝

目錄 1.封裝寄存的C語言的語法volatile&#xff1a;unsigned int:*pGpiobOdrvolatile unsigned int * 2.進一步C語言的封裝 在嵌入式中&#xff0c;底層一定是操作寄存器&#xff0c;我有一個理念&#xff0c;凡事一定要想清楚&#xff0c;把任何知識點融入自己的理解之中&…

#滲透測試#批量漏洞挖掘#暢捷通T+遠程命令執行漏洞

免責聲明 本教程僅為合法的教學目的而準備,嚴禁用于任何形式的違法犯罪活動及其他商業行為,在使用本教程前,您應確保該行為符合當地的法律法規,繼續閱讀即表示您需自行承擔所有操作的后果,如有異議,請立即停止本文章讀。 目錄 一、漏洞概況 二、攻擊特征 三、應急處置…

ollama 學習筆記

1. 參考博客&#xff1a;1. Ollama完整教程&#xff1a;本地LLM管理、WebUI對話、Python/Java客戶端API應用&#xff1a;https://blog.csdn.net/python122_/article/details/1409457202. https://gitee.com/ai-big-model/ollama/tree/main --》REST APIollama 離線安裝包 ollam…

ARM Linux平臺下 OpenCV Camera 實驗

一、硬件原理 1. OV2640 1.1 基本功能 OV2640 是一款低功耗、高性能的圖像傳感器&#xff0c;支持以下功能&#xff1a; 最高分辨率&#xff1a;200 萬像素&#xff08;1600x1200&#xff09;。 輸出格式&#xff1a;JPEG、YUV、RGB。 內置圖像處理功能&#xff1a;自動曝…

vue2.x中父組件通過props向子組件傳遞數據詳細解讀

1. 父組件向子組件傳遞數據的步驟 在子組件中定義 props&#xff1a; 子組件通過 props 選項聲明它期望接收的數據。props 可以是數組形式&#xff08;簡單聲明&#xff09;或對象形式&#xff08;支持類型檢查和默認值&#xff09;。 在父組件中使用子組件時綁定 props&#x…

【Gin】2:快速上手Gin框架(模版、cookie、session)

本文目錄 一、模版渲染二、自定義模版函數三、cookie四、Session五、cookie、session區別六、會話攻擊 一、模版渲染 在 Gin 框架中&#xff0c;模板主要用于動態生成 HTML 頁面&#xff0c;結合 Go 語言的模板引擎功能&#xff0c;實現數據與視圖的分離。 模板渲染是一種動態…

【AI繪畫】大衛? 霍克尼風格——自然的魔法(一丹一世界)

大衛? 霍克尼&#xff0c;很喜歡這個老頭&#xff0c;“藝術是一場戰斗”。老先生零九年有了iphone&#xff0c;開始用iphone畫畫&#xff0c;一零年開始用ipad畫畫&#xff0c;用指頭劃拉&#xff0c;據說五分鐘就能畫一幅&#xff0c;每天早上隨手畫幾幅送給身邊的朋友。很c…

解碼 NLP:從萌芽到蓬勃的技術蛻變之旅

內容概況&#xff1a; 主要講述NLP專欄的內容和NLP的發展及其在現代生活中的廣泛應用。專欄強調實踐為主、理論為輔的學習方法&#xff0c;并通過多個生活場景展示了NLP技術的實際應用&#xff0c;如對話機器人、搜索引擎、翻譯軟件、電商推薦和智能客服等。 這邊我就不多做自我…

解決DeepSeek服務器繁忙問題的實用指南

目錄 簡述 1. 關于服務器繁忙 1.1 服務器負載與資源限制 1.2 會話管理與連接機制 1.3 客戶端配置與網絡問題 2. 關于DeepSeek服務的備用選項 2.1 納米AI搜索 2.2 硅基流動 2.3 秘塔AI搜索 2.4 字節跳動火山引擎 2.5 百度云千帆 2.6 英偉達NIM 2.7 Groq 2.8 Firew…