Php CSRF标记Laravel Sanctum末尾的奇怪URL编码字符
我正在尝试学习如何使用Laravel Sanctum认证。当我发送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
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