在 URL 中传递 base64 编码的字符串

2022-08-30 06:05:17

通过 GET 参数传递原始 base64 编码字符串是否安全?


答案 1

还有其他 base64 规范。(有关详细信息,请参阅此处的表格)。但从本质上讲,您需要65个字符来编码:26个小写字母+ 26个大写字母+ 10个数字= 62个。

您还需要两个 ['+', '/'] 和一个填充字符 '='。但是它们都不是URL友好的,所以只需为它们使用不同的字符,你就可以了。上图中的标准字符是 ['-', '_'],但您可以使用其他字符,只要您以相同的方式解码它们,并且不需要与他人共享。

我建议只写你自己的助手。从 php 手册页上的评论中base64_encode:

function base64_url_encode($input) {
 return strtr(base64_encode($input), '+/=', '._-');
}

function base64_url_decode($input) {
 return base64_decode(strtr($input, '._-', '+/='));
}

答案 2

不,您需要对其进行url编码,因为base64字符串可以包含“+”,“=”和“/”字符,这些字符可能会改变数据的含义 - 看起来像一个子文件夹。

有效的 base64 字符如下所示。

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

推荐