CSRF(跨站請求偽造)教程

CSRF 代表 跨站請求偽造。 CSRF 是 XSS 和 SQL 注入之後,最常見的網路攻擊之一。 簡單來說,CSRF 攻擊是讓訪問我們網站的人執行他們原本不想執行的操作。 一次成功的 CSRF 攻擊可能導致資料損失、未經授權的活動和資料損失,所以絕對是一個需要仔細研究的議題。 使用 HTTP GET 請求進行 CSRF 攻擊 讓我們從最簡單的 CSRF 情境開始。 你有一個汽車的資料庫。 透過 GET 請求 /api/delete?id=1 將會刪除 id 為 1 的汽車。 我訪問了另一個網站,該網站有一個圖片,圖片的來源 URL 是 https://yoursite.com/api/delete?id=1 類似這樣: <img src="<https://yoursite.com/api/delete?id=1>" /> 瀏覽器連接到該 URL 嘗試取得圖片。請求被執行,請求被提交,並且汽車被刪除。 如果應用程式需要驗證,如果你沒有從網站登出,則請求將會成功執行,因為會話仍然有效。 由於 Web 的運作方式,任何對於一個網域的請求都會自動附上會話 cookies(除非使用嚴格的 SameSite cookies),所以伺服器認為該請求是合法的。 你可以輕易地透過 Node.js 應用程式來嘗試重現這個情境。 解決這個問題的簡單方法是避免使用 GET 請求來進行任何資料操作,因為像這類的請求只需使用 GET 方法即可。改用 POST。 這不僅限於圖片,像是 iframes 也有相同的問題。 透過表單進行 CSRF 攻擊 你的應用程式中的任何表單都應該被 CSRF 保護。 Express 是一個用於 Express 的 CSRF 保護中介軟體。...