繁体   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