我尝试在我的 Java Spring-MVC Web 应用程序中使用 OWASP 的 CSRFGuard,但它正在检测用户所做的任何操作的 CSRF 攻击。 Web 应用程序加载,一旦用户尝试导航到 Web 应用程序的任何部分,我就会在 org.owasp.csrfguard.action.Log.Message 中设置 CSRFguard.properties 文件报告“错误:请求中缺少所需的 token ”。即使 URL 确实包含 token (参见屏幕截图)?
这是我的 Owasp.CsrfGuard.properties
文件:
org.owasp.csrfguard.Logger=org.owasp.csrfguard.log.ConsoleLogger
org.owasp.csrfguard.configuration.provider.factory = org.owasp.csrfguard.config.overlay.ConfigurationAutodetectProviderFactory
org.owasp.csrfguard.Enabled = true
org.owasp.csrfguard.ValidateWhenNoSessionExists = false
org.owasp.csrfguard.TokenPerPage=false
org.owasp.csrfguard.Rotate=false
org.owasp.csrfguard.Ajax=true
org.owasp.csrfguard.action.Log=org.owasp.csrfguard.action.Log
org.owasp.csrfguard.action.Log.Message=potential cross-site request forgery (CSRF) attack thwarted (user:%user%, ip:%remote_ip%, method:%request_method%, uri:%request_uri%, error:%exception_message%)
org.owasp.csrfguard.action.Redirect=org.owasp.csrfguard.action.Redirect
org.owasp.csrfguard.action.Redirect.Page=%servletContext%/error.jsp
org.owasp.csrfguard.unprotected.Css=*.css
org.owasp.csrfguard.unprotected.JavaScript=*.js
org.owasp.csrfguard.TokenName=csrfToken
org.owasp.csrfguard.SessionKey=csrfToken
org.owasp.csrfguard.TokenLength=32
org.owasp.csrfguard.PRNG=SHA1PRNG
org.owasp.csrfguard.PRNG.Provider=SUN
org.owasp.csrfguard.Config.Print = true
org.owasp.csrfguard.JavascriptServlet.sourceFile = WEB-INF/csrfguard.js
org.owasp.csrfguard.JavascriptServlet.domainStrict = true
org.owasp.csrfguard.JavascriptServlet.cacheControl = private, maxage=28800
org.owasp.csrfguard.JavascriptServlet.injectIntoForms = true
org.owasp.csrfguard.JavascriptServlet.injectGetForms = true
org.owasp.csrfguard.JavascriptServlet.injectFormAttributes = true
org.owasp.csrfguard.JavascriptServlet.injectIntoAttributes = true
org.owasp.csrfguard.configOverlay.secondsBetweenUpdateChecks = 60
最佳答案
当 token 未随 http 请求一起传递时,就会发生这种情况。我建议使用篡改数据来验证 token 是否随 http 请求一起发送。可能涉及到将请求定向到特定页面的 jsp 或 html,并且您需要在那里注入(inject) token 。 如果您已经尝试过动态 javascript 注入(inject),那么您可以尝试 JSP 标签库注入(inject),因为有时动态 javascript 注入(inject)不起作用。
关于java - 当用户简单导航到我的 Web 应用程序中的任何页面时,为什么 OWASP CSRF-guard 会错误地检测到攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30539077/