【发布时间】:2020-04-29 23:50:18
【问题描述】:
我使用的是 Spring Boot 2.1.1。我认为 CSRF protection is enabled by default 适用于这个版本的 Spring Boot(如果我错了,请纠正我)。我正在尝试为我的 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 进行注释。我还有什么遗漏的吗?
【问题讨论】:
-
是的,默认情况下应该启用 csrf。 spring-security 依赖项在运行时是否可用(您是否将其添加到
pom.xml或 gradle 文件中?)?或者您是否有可能以某种方式禁用它(例如,通过自定义@Configuration类?)? -
@qutax 谢谢,我还没有确认,但这听起来像是问题(我没有在我的 pom.xml 中添加 spring 安全依赖项)。
-
@qutax 这确实是缺失的部分。再次感谢!
-
很高兴听到这个消息!我已将其添加为答案:stackoverflow.com/a/61505985/10551549 :)
标签: java spring-boot jsp csrf