如何使用Spring Boot启用CSRF令牌?

问题描述 投票:0回答:1

我正在使用Spring Boot 2.1.1。我想 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。还有什么是我遗漏的吗?

java spring-boot jsp csrf
1个回答
1
投票

我们通过在 意见 的问题,OP没有添加必要的spring-security依赖,这是CSRF保护所需要的(因为它是Spring Security的一个功能)。


1
投票

如果你想在html源代码中看到它,你应该手动添加它。就像这样。

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

© www.soinside.com 2019 - 2024. All rights reserved.