簡體   English   中英

如何使用 Spring 啟動啟用 CSRF 令牌

[英]How to enable CSRF token with Spring Boot

我正在使用 Spring 引導 2.1.1。 我認為這個版本的 Spring Boot 默認啟用了 CSRF 保護(如果我錯了,請糾正我)。 我正在嘗試為我的 java web 應用程序設置 CSRF 保護,但我不確定我需要進行哪些更改才能顯示 CSRF 令牌。

我正在嘗試通過瀏覽器檢查 CSRF 令牌。 但是,令牌的名稱和值似乎顯示為空白。

我的 jsp 代碼:

<table>
    <c:forEach items="${model.containerObjects}" var="file">
        <tr>
            <form action="/path/container?fileName=${file.getName()}" method="post" id="${file.getName()}">
                <input form="${file.getName()}" type="hidden" value="${file.getName()}" />
                <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
                <td><a href="javascript:{}" onclick="document.getElementById('${file.getName()}').submit()">${file.getName()}</a></td>
                <td>${file.getContentLength()}</td>
                <td>${file.getLastModified()}</td>
            </form>
        </tr>
    </c:forEach>
</table>

但是,(我假設)CSRF 令牌應該位於前端的行如下所示:

<input type="hidden" name="" value="">

我還確保與此端點對應的后端方法使用@POST 進行注釋。 還有什么我想念的嗎?

如果您想在 html 源代碼中看到它,您應該手動添加它。 像這樣的東西:

<meta name="_csrf" th:content="${_csrf.token}"/>

正如我們通過問題評論中的對話發現的那樣,OP 沒有添加必要的 spring-security 依賴項,這是 CSRF 保護所必需的(因為它是 Spring 安全性的功能)。

暫無
暫無

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

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