我尝试使用OWASAP机制来保护我的遗留应用程序表单CSRF,但是导航和后退按钮出现了问题。然后,我尝试使用struts-1令牌机制,但遇到了同样的问题。我认为令牌注入机制的问题是,最初我们将在jsp中生成一个令牌,并将其存储在会话中并执行一些操作。
考虑一下A.jsp。让我们在jsp中获取令牌值1,我们将在会话中存储相同的值。现在,我们将在filter/Action类中验证它。在此之后,我们将在B.jsp中执行一些其他操作,在jsp中具有令牌新值2,而在session.After验证表单服务器中,我们将在会话中具有值2。现在,如果我们使用浏览器back按钮导航并移动到页面1并提交它,它将从缓存加载值,A.jsp将以值1作为标记,在提交A.jsp之后,它将显示CSRF错误,因为它与会话中的值相矛盾。
是否有办法实施CSRF预防机制,而不实际干扰应用程序?
发布于 2016-03-23 13:10:24
那么,如果我正确地理解了您的问题,请按回退按钮,您可以使用旧令牌从缓存中获取页面吗?如果我是正确的,那么有一个简单的方法来解决这个问题-不要缓存您的页面,并一直从服务器加载它们。
这可以通过设置以下响应头来实现。
Cache-Control: max-age=0, no-cache, must-revalidate其他更困难的方法是实现单个页面应用程序,在这种情况下,浏览器内存中总是有实际的令牌。
https://stackoverflow.com/questions/36175453
复制相似问题