我正在尝试为一个简单的注册应用程序实现Csrf保护。我有一个状态更改表单registration.jsp,它需要使用csrf令牌验证进行保护。我已经导入了spring security 5.2.3依赖项,还在registration.jsp中添加了隐藏的input标记。从spring csrf文档中可以明显看出,我们应该能够看到标头或cookie值中设置的令牌。
<form:label path="note">Note:</form:label>
<form:textarea path="note" cols="25" rows="5"/><br/>
<form:button>Register</form:button>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form:form>
</div>
1条答案
按热度按时间oxalkeyp1#
默认表单方法为
GET
,它不需要CSRF标记。如果未按文档中的说明禁用表单方法,则将其设置为POST
时应添加CSRF标记:在Chrome调试器的网络选项卡中,您应该能够看到
POST
-request的有效负载中的csrf-token,其密钥为_csrf
。似乎是by design未呈现隐藏的输入字段。
隐藏的输入在呈现的页面中是完全不可见的,并且没有办法使其在页面内容中可见。
否则,您所做的应该相当于使用Spring Security JSP标记库中的csrftag
<sec:csrfInput />
。