簡體   English   中英

使用帶有JWT的Symfony 3 API REST和Angular webapp的CSRF令牌保護是否有用?

[英]Is it useful to use CSRF token protection for Symfony 3 API REST and Angular webapp with JWT?

我們正在構建一個基於Symfony 3 REST API(帶有FosRestBundle)的Angular 2 Web應用程序。 我們使用有狀態JWT來驗證后端和前端之間的用戶。

我們現在正在考慮CSRF,我們想知道除了JWT之外是否使用CSRF令牌是正確的。 我們在FosRestBundle文檔讀到

在構建應該通過HTML表單以及REST API處理表單的單個應用程序時,會遇到CSRF令牌驗證問題。 在大多數情況下,有必要為HTML表單啟用它們,但將它們用於REST API是沒有意義的。 出於這個原因,有一個表單擴展來禁用具有特定角色的用戶的CSRF驗證。 這當然要求REST API用戶對自己進行身份驗證並分配特殊角色。

我們也閱讀了其他一些StackOverflow問題(參見此處此處 )。

我的問題很簡單: 為什么不推薦使用帶有REST API的CSRF令牌? 我們不了解JWT如何保護CSRF攻擊。

謝謝 :-)

首先,“有狀態的JWT”是矛盾的。 引用JWT的介紹

每當用戶想要訪問受保護的路由或資源時,用戶代理應該使用承載模式發送JWT,通常在Authorization標頭中。 標題的內容應如下所示:

Authorization: Bearer <token>

這是一種無狀態身份驗證機制,因為用戶狀態永遠不會保存在服務器內存中 服務器的受保護路由將在Authorization標頭中檢查有效的JWT,如果存在,則允許用戶訪問受保護的資源。

使用JWT進行身份驗證,如果操作正確,則會使CSRF令牌過時。 這是因為CSRF攻擊依賴於存儲cookie的瀏覽器,並將每個請求發送給服務器。 但是,當單擊觸發POST請求的偽造表單中的按鈕時,此請求將永遠不會包含Authorization標頭,因此服務器將其視為未經授權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM