CSRF(跨站請求偽造)簡介
設計 Web 程序時,安全性是一個主要問題。我不是在談論 DDoS 保護、使用強密碼或兩步驗證。我說的是對網路程序的最大威脅。它被稱為 CSRF, 是 Cross Site Request Forgery (跨站請求偽造)的縮寫。
什麼是 CSRF?
首先,CSRF 是 Cross Site Request Forgery 的縮寫。它通常發音為 「sea-surf」,也經常被稱為 XSRF。CSRF 是一種攻擊類型,在受害者不知情的情況下,在受害者登錄的 Web 程序上執行各種操作。這些行為可以是任何事情,從簡單地點贊或評論社交媒體帖子到向人們發送垃圾消息,甚至從受害者的銀行賬戶轉移資金。
CSRF 如何工作?
CSRF 攻擊嘗試利用所有瀏覽器上的一個簡單的常見漏洞。每次我們對網站進行身份驗證或登錄時,會話 cookie 都會存儲在瀏覽器中。因此,每當我們向網站提出請求時,這些 cookie 就會自動發送到伺服器,伺服器通過匹配與伺服器記錄一起發送的 cookie 來識別我們。這樣就知道是我們了。
這意味著我將在知情或不知情的情況下發出請求。由於 cookie 也被發送並且它們將匹配伺服器上的記錄,伺服器認為我在發出該請求。 CSRF 攻擊通常以鏈接的形式出現。我們可以在其他網站上點擊它們或通過電子郵件接收它們。單擊這些鏈接時,會向伺服器發出不需要的請求。正如我之前所說,伺服器認為我們發出了請求並對其進行了身份驗證。
一個真實世界的例子
為了把事情看得更深入,想像一下你已登錄銀行的網站。並在 yourbank.com/transfer 上填寫表格。你將接收者的帳號填寫為 1234,填入金額 5,000 並單擊提交按鈕。現在,我們將有一個 yourbank.com/transfer/send?to=1234&amount=5000 的請求。因此伺服器將根據請求進行操作並轉賬。現在想像一下你在另一個網站上,然後點擊一個鏈接,用黑客的帳號作為參數打開上面的 URL。這筆錢現在會轉賬給黑客,伺服器認為你做了交易。即使你沒有。
CSRF 防護
CSRF 防護非常容易實現。它通常將一個稱為 CSRF 令牌的令牌發送到網頁。每次發出新請求時,都會發送並驗證此令牌。因此,向伺服器發出的惡意請求將通過 cookie 身份驗證,但 CSRF 驗證會失敗。大多數 Web 框架為防止 CSRF 攻擊提供了開箱即用的支持,而 CSRF 攻擊現在並不像以前那樣常見。
總結
CSRF 攻擊在 10 年前是一件大事,但如今我們看不到太多。過去,Youtube、紐約時報和 Netflix 等知名網站都容易受到 CSRF 的攻擊。然而,CSRF 攻擊的普遍性和發生率最近有減少。儘管如此,CSRF 攻擊仍然是一種威脅,重要的是,你要保護自己的網站或程序免受攻擊。
via: http://www.linuxandubuntu.com/home/understanding-csrf-cross-site-request-forgery
作者:linuxandubuntu 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive