Php CSRF标记Laravel Sanctum末尾的奇怪URL编码字符

Php CSRF标记Laravel Sanctum末尾的奇怪URL编码字符,php,laravel,csrf,laravel-sanctum,Php,Laravel,Csrf,Laravel Sanctum,我正在尝试学习如何使用Laravel Sanctum认证。当我发送GET时https://localhost/sanctum/csrf-cookie我得到了以下CSRF cookies: XSRF-TOKEN=eyJpdiI6Inhvb0FDVXdHZDU5QzBqQTNKaWNxTUE9PSIsInZhbHVlIjoiSXNudjNiNE9xbmtNVWdsQ0l2SDRyYUNPQXIrTGJLb2ZMVDc2NWttenZGY0NkcDRvQzFVQlZOMDRlNFdTOHJaNiIsI

我正在尝试学习如何使用Laravel Sanctum认证。当我发送
GET时https://localhost/sanctum/csrf-cookie
我得到了以下CSRF cookies:

XSRF-TOKEN=eyJpdiI6Inhvb0FDVXdHZDU5QzBqQTNKaWNxTUE9PSIsInZhbHVlIjoiSXNudjNiNE9xbmtNVWdsQ0l2SDRyYUNPQXIrTGJLb2ZMVDc2NWttenZGY0NkcDRvQzFVQlZOMDRlNFdTOHJaNiIsIm1hYyI6ImY0Y2M2YzZiZWIxYWVmZTRmMWI5NWRhNTBhN2JmM2VjNGExYjU0MGYwYWVmYTE4ODQxM2I0YTFlMWVjZTVhMDkifQ%3D%3D; 
您可以注意到令牌末尾奇怪的%3D%3D。这些字符也添加到我的laravel_会话cookie中。 然后,当我在头X-XSRF-token中使用这个确切的令牌发回请求时,我得到了令牌不匹配错误。当我删除字符时-所有都有效。我想知道这些角色是从哪里来的,我怎样才能删除它们


UPD:由于这些是编码的URL字符,当我解码它们并将“==”放在X-XSRF-TOKEN的末尾时,这似乎起到了作用。不过,奇怪的是,我之前只是手动删除了查询中的字符,它为什么会工作。

是的,这代表
=
符号,它是base64'ed CSRF令牌的一部分。我猜它只有在删除它时才起作用,因为
=
符号是特殊字符。在非常高的级别上,他们只是将字符串填充到适当的长度。

是的,这表示
=
符号,它是base64'ed CSRF令牌的一部分。我猜它只有在删除它时才起作用,因为
=
符号是特殊字符。在非常高的级别上,他们只是将字符串填充到适当的长度。

正如您已经知道的,
=
在url编码时变成
%3D

通常,当您遇到一个包含大量随机顺序的数字和字符的字符串,并且该字符串以
=
结尾时,它很可能是以base64编码的

=
被添加(在字符串末尾)作为填充,以匹配字符串中特定数量的字符。您可以在中阅读更多关于它的信息

为了回答您的问题,我将尝试在结尾处使用和不使用
==
解码给定的令牌,我将使用,这样您也可以在您的结尾处尝试

使用
==

{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
==

{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
它们是相同的

它之所以有效,是因为它们(
=
)只是填充,不包含任何信息


我不是laravel的专家,但我猜它不适用于
%3D
的原因是它没有解码url

如您所知,
=
在url编码时变为
%3D

通常,当您遇到一个包含大量随机顺序的数字和字符的字符串,并且该字符串以
=
结尾时,它很可能是以base64编码的

=
被添加(在字符串末尾)作为填充,以匹配字符串中特定数量的字符。您可以在中阅读更多关于它的信息

为了回答您的问题,我将尝试在结尾处使用和不使用
==
解码给定的令牌,我将使用,这样您也可以在您的结尾处尝试

使用
==

{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
==

{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
{"iv":"xooACUwGd59C0jA3JicqMA==","value":"Isnv3b4OqnkMUglCIvH4raCOAr+LbKofLT765kmzvFcCdp4oC1UBVN04e4WS8rZ6","mac":"f4cc6c6beb1aefe4f1b95da50a7bf3ec4a1b540f0aefa188413b4a1e1ece5a09"}
它们是相同的

它之所以有效,是因为它们(
=
)只是填充,不包含任何信息

我不是laravel的专家,但我猜它不适用于
%3D
的原因是它没有解码url