您好我通过Spring学习安全性,我从教程中读到一句话如果启用了CSRF,则必须包含_csrf.token
在您要登录或退出的页面中。
以下是我通过提交按钮调用它们的方法:
<c:url var="logoutAction" value="/j_spring_security_logout" />
<form action="${logoutAction}" method="post">
<input type="submit" value="Logout" />
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
</form>
我的问题是如何以 <a href="..">
的形式调用它们:
<c:url var="logoutAction" value="/j_spring_security_logout" />
<a href="${logoutAction}"> logout</a>
我如何以上述形式调用 csrf 保护,希望你能得到我的问题谢谢。
答案 0 :(得分:1)
您必须在注销路径中包含csrf,即/yourapp/logout?[csrf_param_name]=[csrf_token]
。
答案 1 :(得分:0)
您配置错误,应首先使用JSP指令包含spring标记库,如下所示:
start -> statement // cannot change
statement -> IDENTIFIER statement0 SEMICOLON
statement0 -> EQUAL expression
statement0 -> LPAREN parameters RPAREN SEMICOLON
然后在您的表单中确保包含以下内容:
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
例如:
<sec:csrfInput />
对于注销链接执行相同操作,请使用表单。这是我项目的一个例子:
<form method="post" action="/do/something">
<sec:csrfInput />
Name:<br />
<input type="text" name="name" />
...
</form>