Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每个请求的Csrf令牌_Java_Security_Jsp_Csrf - Fatal编程技术网

Java 每个请求的Csrf令牌

Java 每个请求的Csrf令牌,java,security,jsp,csrf,Java,Security,Jsp,Csrf,任何人都可以帮助如何为每个请求生成csrf令牌以及如何验证它 通常,您必须从表单模板中获取getToken,以便在表单中包含隐藏的输入,然后在接收Servlet中确保您获得了POST请求并且有效 你如何在你的应用程序中保持一致将取决于你使用的框架代码。如果“Action类”指的是Struts 2,那么该框架已经有了自己的TokenSessionInterceptorCSRF机制,您通常希望重用该机制 现在,每个请求都有一个需求 如果您的意思是有人要求在每次页面加载时更改CSRF令牌,您应该抵制该

任何人都可以帮助如何为每个请求生成csrf令牌以及如何验证它

通常,您必须从表单模板中获取
getToken
,以便在表单中包含隐藏的输入,然后在接收Servlet中确保您获得了POST请求并且
有效

你如何在你的应用程序中保持一致将取决于你使用的框架代码。如果“Action类”指的是Struts 2,那么该框架已经有了自己的
TokenSessionInterceptor
CSRF机制,您通常希望重用该机制

现在,每个请求都有一个需求

如果您的意思是有人要求在每次页面加载时更改CSRF令牌,您应该抵制该请求,因为它是假的

“CSRF令牌不会在每次请求时都失效”是笔测试报告中常见的填充词,但修复它会使应用程序的可用性大大降低。如果您的旧令牌在每个新页面上都无效,那么您将无法在两个选项卡中同时使用不同的页面,或者返回页面然后提交表单

当您应该使CSRF令牌无效(并发布一个新令牌)的同时,您也使会话无效:在任何特权级别更改上。最明显的是,当用户成功登录时,您应该扔掉旧会话和其中的旧CSRF令牌,并用新令牌替换它们以防止会话固定攻击


但是,更进一步的做法牺牲了可用性,在安全性方面没有任何好处。

是的,这一切似乎都是意料之中的。次要问题:(a)记住要确保您正在检查
的servlet是有效的
只接受帖子(因为您不想在URL中允许令牌泄漏);(b) 一般来说,您应该总是对放入JSP中HTML页面中的所有文本值进行HTML转义,并引用属性值(即使在这种特殊情况下,它不易受到HTML注入的攻击—如果始终进行转义,则更易于管理);(c) 在生产中,您需要删除敏感令牌到标准输出的日志记录。