1

我正在开发一个从 cookie 标头解析 CSRF 令牌的应用程序。我想知道 CSRF 令牌是否使用 URL 安全字符进行 base64 编码(参见https://simplycalc.com/base64url-encode.php),以便我可以将它们与正则表达式匹配

[.a-zA-Z0-9_-]+

我能够找到有关 JSON Web 令牌 (JWT) 的文档,表明它们由用句点 ('.') 分隔的 base64url 编码部分组成,但我无法找到有关 CSRF 令牌的类似文档。

CSRF 令牌通常也仅限于某个字符集,还是它们可以包含任何字符?

4

1 回答 1

2

CSRF 令牌是一个不透明的“nonce”,不包含任何信息——表单提交中的令牌和 cookie 或标头中的令牌只需匹配即可。如果您看到它们是 base64 编码的,那只是为了方便传输,但它不会解码为任何有用的东西,大多数时候只是随机字节。与 JWT 的 JSON 结构完全不同。

查看我当前的框架(Laravel),它的 CSRF 令牌只是随机字符串(它们来自 base64,但不是有效的 base64)。大多数其他框架也可能是这种情况。

于 2019-10-15T04:25:49.233 回答