我想使用最简单的防范CSRF的方法,即根据OWASP的CSRF Prevention Cheat Sheet - Checking Referer Header检查引用标头。在java servlet中实现它的正确方法是什么?这样的事情会起作用吗?
String requestUrl = request.getRequestURL().toString();
// we expect the referer to "start with" at least up to the hostname of the current request url
String expectedRefererStartsWith = request.getRequestURL().substring(0, requestUrl.indexOf('/', 9));
String referer = request.getHeader("referer");
return referer != null && referer.startsWith(expectedRefererStartsWith);
请注意,我意识到引用检查不是CSRF最简单的方法(如果浏览器或网络设备阻止引用标头,可能会导致问题),但对于这个特定的应用程序,它会没问题。