spring-security 未在简单Html表单的UI中呈现Csrf标记

ttcibm8c  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(128)

我正在尝试为一个简单的注册应用程序实现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>
oxalkeyp

oxalkeyp1#

默认表单方法为GET,它不需要CSRF标记。如果未按文档中的说明禁用表单方法,则将其设置为POST时应添加CSRF标记:
在Chrome调试器的网络选项卡中,您应该能够看到POST-request的有效负载中的csrf-token,其密钥为_csrf
似乎是by design未呈现隐藏的输入字段。
隐藏的输入在呈现的页面中是完全不可见的,并且没有办法使其在页面内容中可见。
否则,您所做的应该相当于使用Spring Security JSP标记库中的csrftag <sec:csrfInput />

相关问题