CSRF 令牌是 base64url 编码的吗?
Are CSRF tokens base64url encoded?
我正在开发一个从 cookie header 解析 CSRF 令牌的应用程序。我想知道 CSRF 令牌是否使用 URL-safe 字符进行 base64 编码(参见 https://simplycalc.com/base64url-encode.php),以便我可以将它们与正则表达式
匹配
[.a-zA-Z0-9_-]+
我能够找到关于 JSON 网络令牌 (JWT) 的文档,表明它们由以句点 ('.') 分隔的 base64url 编码部分组成,但我找不到类似的文档在 CSRF 令牌上。
CSRF token 是不是一般也仅限于特定的字符集,或者它们可以包含任何字符?
CSRF 令牌是不透明的 "nonce",不包含任何信息 -- 表单提交中的令牌和 cookie 中的令牌或 header 只需匹配即可。如果你看到它们是 base64 编码的,那只是为了传输方便,但它不会解码成任何有用的东西,大多数时候只是随机字节。完全不像 JWT 的 JSON 结构。
查看我当前的框架 (Laravel),它的 CSRF 标记只是随机字符串(它们源自 base64,但不是有效的 base64)。大多数其他框架也是如此。
我正在开发一个从 cookie header 解析 CSRF 令牌的应用程序。我想知道 CSRF 令牌是否使用 URL-safe 字符进行 base64 编码(参见 https://simplycalc.com/base64url-encode.php),以便我可以将它们与正则表达式
匹配[.a-zA-Z0-9_-]+
我能够找到关于 JSON 网络令牌 (JWT) 的文档,表明它们由以句点 ('.') 分隔的 base64url 编码部分组成,但我找不到类似的文档在 CSRF 令牌上。
CSRF token 是不是一般也仅限于特定的字符集,或者它们可以包含任何字符?
CSRF 令牌是不透明的 "nonce",不包含任何信息 -- 表单提交中的令牌和 cookie 中的令牌或 header 只需匹配即可。如果你看到它们是 base64 编码的,那只是为了传输方便,但它不会解码成任何有用的东西,大多数时候只是随机字节。完全不像 JWT 的 JSON 结构。
查看我当前的框架 (Laravel),它的 CSRF 标记只是随机字符串(它们源自 base64,但不是有效的 base64)。大多数其他框架也是如此。