这并不是对你的问题的确切回答,很遗憾,没有神奇的水晶球无法回答模糊的问题 ^^,但以下是你应该尝试的一些事情:
- 检查你的请求是否来自与
Owasp.CsrfGuard.properties
配置文件中定义的unprotected
模式之一匹配的URL(这些值来自OWASP文档;你应该设置不同的值):
.
org.owasp.csrfguard.unprotected.Tag=/Owasp.CsrfGuard.Test/tag.jsp
org.owasp.csrfguard.unprotected.JavaScriptServlet=/Owasp.CsrfGuard.Test/JavaScriptServlet
org.owasp.csrfguard.unprotected.Html=*.html
org.owasp.csrfguard.unprotected.Public=/MySite/Public/*
您不需要以任何方式修改DB模式。这不是OWASP CRSF guard的工作方式(生成的令牌存储在会话中,而不是持久存储在数据库中)。
还值得一提的是,您正在遵循一个过时的博客文章:如果您使用Spring,则根本不需要使用OWASP CSRF guard。您应该使用具有内置CSRF保护的spring-security身份验证,这更容易设置。
请查看教程(链接),了解如何设置基于HTML表单+ SQL数据库的身份验证和CSRF保护(此外,请不要错过bcrypt密码哈希教程;它非常容易设置,在某些时候,您会很高兴存储安全哈希而不是明文密码)。
您还将看到,使用spring-security添加CSRF保护时,您不需要修改db,因为CSRF保护令牌是会话存储的。
设置只需5-15分钟;对于Spring初学者最多需要30分钟。简而言之,框架负责生成和验证令牌,并在无效请求时返回身份验证错误。
在<http>
标签内,只需包含<csrf />
标签即可配置spring-security.xml。
如果您正在使用基于HTML表单的身份验证,您还需要在表单中包含以下隐藏输入:
<input type="hidden" name="${_csrf.parameterName}"
value="${_csrf.token}" />