什麼是跨站請求偽造 (CSRF)?
跨站請求偽造
跨站請求偽造 (CSRF) 是一種網際網路漏洞,它涉及受信任網站使用者發出未經授權的命令。與利用使用者對網站信任的跨站指令碼不同,CSRF 利用網站對特定使用者瀏覽器的信任。會話劫持或一鍵式攻擊也是指同一件事。
瀏覽器的“GET”命令通常用作 CSRF 中的漏洞點。為了將命令注入特定網站,CSRF 使用諸如“IMG”之類的 HTML 標籤。然後,網站的特定使用者同時作為主機和無意的幫兇參與其中。由於合法使用者傳送了命令,網站通常不知道自己正在遭受攻擊。攻擊者可能會請求將資金轉移到另一個帳戶,提取更多資金,或將資金髮送到另一個帳戶(對於 PayPal 和類似網站而言)。
它是如何執行的?
CSRF 攻擊很難執行,因為它需要許多因素才能成功:
攻擊者必須在攻擊不檢查引用標頭(標準)的網站或具有瀏覽器或外掛故障(罕見)允許偽造引用的使用者/受害者之間進行選擇。
攻擊者必須在目標網站上找到能夠更改受害者電子郵件地址、更改登入憑據或轉移資金的表單提交。
攻擊者必須找出表單或 URL 上所有輸入的正確值。如果其中任何一個需要是攻擊者無法準確猜測的秘密值或 ID,則攻擊將失敗。
在受害者登入到目標站點時,攻擊者必須吸引使用者/受害者訪問包含惡意程式碼的網頁。
假設甲同時瀏覽他的銀行帳戶並在聊天室聊天。攻擊者(乙)在聊天頻道中發現甲也登入到bank.com。乙誘使甲點選指向幽默圖片的連結。“IMG”標籤提供 bank.com 表單輸入的資料,這將把錢從甲的帳戶轉移到乙的帳戶。如果 bank.com 在轉移資金之前沒有對甲進行二次身份驗證,則攻擊將成功。
預防跨站請求偽造
使用者端:從使用者體驗的角度來看,使用者端預防是無效的;預防可以透過簡單地一次只打開一個標籤頁並且不使用“記住我”功能來實現。
伺服器端:使用 CSRF 令牌是在伺服器端實現 CSRF 保護最常用的方法之一。CSRF 令牌與使用者的會話相關聯,但不會自動提交。只有在網站收到有效的 CSRF 令牌以及 Cookie 時,網站才會繼續執行;攻擊者無法代表使用者執行操作,因為攻擊者無法知道使用者的唯一令牌。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP