问题描述
在 Jenkins 2.275 中,出现如下日志消息:
# tail -f /var/log/jenkins/jenkins.log ... 2021-03-01 11:13:06.565+0000 [id=15] WARNING hudson.security.csrf.CrumbFilter#doFilter: No valid crumb was included in request for /ajaxBuildQueue by k4nz. Returning 403. 2021-03-01 11:13:10.571+0000 [id=11] WARNING hudson.security.csrf.CrumbFilter#doFilter: Found invalid crumb a433bb1e4447c0afe7ca04cda88bfd3c0ebddf300f0b52399cf2c47559152b1c. If you are calling this URL with a script, please use the API Token instead. More information: https://jenkins.io/redirect/crumb-cannot-be-used-for-script ...
问题原因
在新版本中,CSRF Token 只能用于创建它们的会话。就是说 Session A 创建某个 CSRF Token,则该 CSRF Token 只能被 Session A 使用。这是为了限制攻击者获取到它们后的影响,即使攻击者拿到 CSRF Token,如果攻击者没有会话信息,依旧无法使用该 CSRF Token 请求。
以前的某些脚本,通过 /crumbIssuer/api 获取 CSRF Token,然后访问接口。现在,由于脚本是没有会话信息的,因此在执行受 CSRF 保护的动作时,会失败。
除非这些脚本能够携带会话信息,或者使用 API toke

本文解析了Jenkins 2.275版本中出现的CSRF Token问题,包括问题原因、解决方法及如何调整日志级别来减少警告信息的数量。
最低0.47元/天 解锁文章
2209

被折叠的 条评论
为什么被折叠?



