從 Postman REST 客戶端發送 CSRF 令牌
一、概述
每次我們測試啟用 CSRF 保護的端點時,我們必須手動從 cookie 中獲取 CSRF 令牌並將其設置在X-XSRF-TOKEN
請求標頭中。如果我們不發送 CSRF 令牌,我們會收到403 Forbidden
錯誤。
在本教程中,我們將了解如何在使用 Postman 時自動將 CSRF 令牌發送到服務器。
2. 應用程序設置
我們不會討論如何在 Spring 應用程序中啟用 CSRF 保護,我們已經在之前的文章中介紹過。
正如我們所知,我們可以在客戶端的 cookie 中找到 CSRF 令牌,默認情況下,對POST
、 PUT
和DELETE
HTTP 動詞實施 CSRF 保護。
此外,為了測試,我們將使用上一篇文章中的一個端點,一個POST
請求,它使用戶能夠將金額轉移到一個帳戶:
POST http://localhost:8080/transfer?accountNo=1234&amount=100
3.郵遞員
首先,我們將在不考慮 CSRF 令牌的情況下使用 Postman 客戶端運行測試。之後,我們將運行另一個測試,我們發送 CSRF 令牌並設置 Postman 發送它 自動地。
3.1。沒有 CSRF 令牌的測試
讓我們打開 Postman 並添加一個新請求:
現在,我們在不發送 CSRF 令牌的情況下執行請求,我們得到403 Forbidden
錯誤:
接下來,我們將看看如何解決這個問題。
3.2. X-XSRF-TOKEN
標頭屬性
在Headers
選項卡中,讓我們添加一個名為X-XSRF-TOKEN
的新參數,並將值設置為xsrf-token.
X-XSRF-TOKEN
是 CSRF 的標頭,而xsrf-token
是我們將在之後定義的環境變量:
3.3.環境變量xsrf-token
現在讓我們轉到左側的Environments
並創建一個名為 DEV 的新環境:
在右側,我們定義上面提到的環境變量,叫做xsrf-token.
我們將其餘字段留空:
讓我們回到請求,從右上角選擇 DEV Environment,以便我們可以使用我們定義的 environment 屬性:
3.4.腳本
現在讓我們單擊“ Tests
”選項卡。我們將在此處添加以下腳本:
該腳本檢索XSRF-TOKEN
cookie 的值並將其分配給環境變量xsrf-token.
現在,來自服務器的XSRF-TOKEN
的任何值都將傳輸到X-XSRF-TOKEN
標頭屬性。
2.5.測試
當我們執行請求時,我們現在得到200 OK
響應:
三、結論
在本文中,我們了解瞭如何測試啟用了 CSRF 保護的應用程序的端點。
每次在同一端點上執行新請求時,我們使用 Postman 客戶端自動發送 CSRF 令牌。這更有效,因為我們不必手動獲取 CSRF 令牌並將其設置在請求標頭中。