在我们最近的Java Web应用程序安全扫描期间,我们发现了CSRF漏洞.
我知道对于使用像Spring Security这样的安全框架的新应用程序,我们可以轻松地为每个表单添加隐藏的输入并执行其他所需的配置,这将解决问题.
name="${_csrf.parameterName}"
value="${_csrf.token}"/>
但是我们的应用程序仍然使用acegi-security(1.0.2)并且有多个用JSP编写的表单.
在所有这些表单上添加输入类型隐藏的csrf标记似乎非常繁琐.没有所有这些艰苦的工作,是否有更智能的方法来保护我的应用程序.
解决方法:
同步器令牌模式是防止CSRF的最佳方式.
防止CSRF的另一种方法是检查referer标头.一个示例代码,
String request_origin = request.getHeader("referer");
//check if origin of the request
//is coming from known source
if(!knownURIs(request_origin)){
//reject the request
}
else
//process request
但是,如果您使用HTTPS和/或您的站点容易受到XSS / Open重定向的影响,则此方法将无效,这可能很容易绕过此检查.
标签:java,spring-security,csrf
来源: https://codeday.me/bug/20190708/1400067.html