CSRF原理詳解

一、CSRF原理過程

CSRF(Cross-site request forgery)跨站請求偽造,是一種網絡攻擊方式,攻擊者利用受害者已登錄的身份,在不知情的情況下發送惡意請求,以執行未經授權的操作。攻擊過程如下:

一、受害者登錄網站A,A將用戶登錄信息保存在Cookie中.
二、受害者未退出網站A,進入惡意攻擊者的網站B.
三、網站B向網站A發起請求,此時請求中包含了受害者在網站A中的Cookie和誤導受害者執行的惡意代碼.
四、網站A收到請求,由於含有合法身份驗證Cookie,且服務器端沒有做CSRF防禦措施,便執行了攻擊者的惡意代碼.
五、攻擊完成,受害者無感知.

二、CSRF原理驗證

常見的CSRF防禦措施是在向服務器提交請求時,提交一個隨機生成的token,使得請求在服務器端通過校驗後才會被執行。token的獲取可以通過生成的方式避免重複,具體流程如下:

一、服務器生成一個 token,存儲到數據庫之類的高安全數據存儲介質中,如果是多台服務器負載均衡,還要保證所有服務器擁有同一個 token.
二、服務器將這個token寫入到表單的隱藏字段或cookie中.
三、用戶接收到響應的頁面,之後如果點擊了一個提交請求,token值將隨用戶提交的數據一起發送到服務器.
四、服務器收到用戶提交的數據和 token,然後比較兩者的值是否相等,相等就說明這個請求是合法的.

三、XSS和CSRF攻擊原理

與XSS(Cross-site scripting)跨站腳本攻擊不同,XSS攻擊時攻擊者在web頁面中注入惡意腳本,執行非法指令;而CSRF攻擊通過獲取到用戶的身份信息,進而執行web頁面的非法指令,我們可以對比這兩種攻擊方式的原理體會到他們的不同。

四、CSRF原理及利用方式

可以使用以下方式進行CSRF攻擊:

  1. 通過圖片URL發起攻擊:img標籤是可以直接把圖片以URL形式展示,當用戶訪問這個惡意URL時就觸發了攻擊.
  2. 利用iframe發起攻擊:攻擊者在博客里添加了一個iframe標籤,在裏面填上類似csrf.html,在填上了一個Form表單,通過隱藏表單來設置攻擊指令.
  3. 利用提交表單進行攻擊:一個前端程序使用get和post請求,反饋一個轉移指令給後台,攻擊者會不斷提交表單,執行惡意請求.

五、簡述CSRF的攻擊原理

要實現CSRF攻擊,攻擊者必須要讓受害者登錄了網站A並且在獲取了受害者的Cookie後才能執行。攻擊者可以通過發送惡意郵件,冒充可靠來源,引誘受害者點擊惡意鏈接,來獲取到受害者的Cookie。可能最常見的是圖像方式,攻擊者創建了一個img標籤,其中設置了類似「img src=」http://www.a.com/account.asp?action=delete」的一些操作。只要受害者在瀏覽器里加載任何一個頁面,這個請求便會被發送,而受害者不會察覺到這個請求的存在,其賬戶也隨之被刪除。

六、CSRF原理獲取不到受害者的Cookie

為了達到獲取受害者Cookie的目的,攻擊者可以使用XSS、XSS Worm、跨域漏洞等方式,進一步來實現獲取受害者Cookie的目的。其中,XSS是最為常見的攻擊手段。攻擊者注入JS代碼後,獲得了Cookie,然後發送到了攻擊者的服務器上。XSS Worm更為危險,有了它,只要用戶訪問了攻擊者的複製的網頁,該病毒便會自動向所有用戶的好友發送具有傳染性的消息或網址,很快就會造成惡性傳播。除了這兩種方式,文件上傳漏洞、Http Referer跨域等方式都可能被利用來獲取到受害者的Cookie。

七、CSRF Token生成原理

一般來說,CSRF攻擊防禦都需要用到Token技術。這類Token有兩種生成方法:

  1. 基於服務器Token,也就是每次生成的Token都是隨機數,放到cookie或隱藏表單裏面,服務器通過驗證Token的值來遍歷可信請求,如果驗證成功則允許請求。這種方式需要服務器開銷較多,但是更為安全。
  2. 基於用戶Token,每個用戶登錄系統時,唯一的用戶Token就創建出來,然後將這個Token和之後證明功能的流程中用的狀態綁定到一起,一旦發現存在CSRF的情況,就將當前狀態全部刪除。這種方式不容易被攻擊,但是效率較低。

八、CSR原理

CSR(Client-side Rendering),即客戶端渲染,是一種在客戶端生成用戶界面的方式。此種方式0前端工程師可直接降低後端代碼的負載,並且頁面展示效果較好,但同時這也會帶來安全問題,容易導致CSRF攻擊等漏洞;通過用戶輸入和表單提交可以發起CSRF攻擊,也能夠基於用戶歷史錯誤的行為來構造XSS攻擊,故前端工程師對於基本的安全問題必須要有足夠的了解。

九、CSRF攻擊

CSRF攻擊的最終目的是要讓受害者不知不覺間向服務器發送請求。攻擊者需要了解被攻擊系統的請求方式,然後初始化一些參數,最終組裝成請求參數提交至服務器。提交惡意請求的方式有多種,其中最常見的就是提交表單,攻擊者會通過以下方式發起CSRF攻擊:

一、提交表單
二、構造一個image對象,利用javascript發起post請求發出。
三、修改用戶賬戶信息
四、利用iframe來發送CSRF攻擊請求,直接跳轉至相關代碼或者結果頁面而不要主動發起請求。

十、CSRF危害

CSRF攻擊主要針對用戶隱私數據、用戶既有資源的篡改、用戶無法感知惡意客戶端的危害。以上這些危害都會影響到用戶,導致資金的損失、賬戶的被盜等嚴重問題,因此,科技界與法律界應該共同面對並解決CSRF攻擊帶來的弊端。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/238826.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:13
下一篇 2024-12-12 12:13

相關推薦

  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • GloVe詞向量:從原理到應用

    本文將從多個方面對GloVe詞向量進行詳細的闡述,包括其原理、優缺點、應用以及代碼實現。如果你對詞向量感興趣,那麼這篇文章將會是一次很好的學習體驗。 一、原理 GloVe(Glob…

    編程 2025-04-27
  • 編譯原理語法分析思維導圖

    本文將從以下幾個方面詳細闡述編譯原理語法分析思維導圖: 一、語法分析介紹 1.1 語法分析的定義 語法分析是編譯器中將輸入的字符流轉換成抽象語法樹的一個過程。該過程的目的是確保輸入…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25

發表回復

登錄後才能評論