![](/img/trans.png)
[英]How can I send some jsp forms without csrf token in spring security
[英]csrf token without jsp (spring mvc)
我在 Spring 安全配置中啟用了 csrf 令牌。 但是移動設備如何接收 csrf 令牌? 當我有 jsp 時,它看起來像:
<input type='hidden' name='${_csrf.parameterName}' value='${_csrf.token}'/>
但是現在我沒有 jsp... 那么有什么方法可以手動發送 csrf 嗎?
一種流行的做法是對過濾器進行編碼,以將令牌作為cookie附加。 然后,您的客戶端首先發送GET請求以獲取該Cookie。 對於后續請求,該Cookie然后作為標頭發送回。
您可以查看官方的Spring Angular指南 ,並參考Spring Lemon的源代碼以獲取詳細的實現。
您可以實施無狀態CSRF保護。 Robbert van Waveren很好地解釋了一種解決方案,即讓客戶端在Cookie和自定義HTTP標頭中生成並發送相同的唯一秘密值 :
考慮到僅允許網站為其自己的域讀取/寫入Cookie,因此只有真實網站才能在兩個標頭中發送相同的值。 使用這種方法,您的服務器要做的就是在每個請求無狀態的基礎上檢查兩個值是否相等!
您可以通過查看_csrf
屬性來獲取它。
import javax.servlet.http.HttpServletRequest;
import org.springframework.security.web.csrf.CsrfToken;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/csrf_token")
public class CsrfTokenController {
@GetMapping
public String getToken(HttpServletRequest request) {
CsrfToken token = (CsrfToken) request.getAttribute("_csrf");
return token.getToken();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.