Php 使用带有codeigniter的url中的base64编码字符串

Php 使用带有codeigniter的url中的base64编码字符串,php,codeigniter,base64,Php,Codeigniter,Base64,我有一个加密的、base64编码的数组,我需要将其放入url并插入发送给客户端的电子邮件中,以使它们能够被识别(唯一)-问题是base64_encode()经常在其字符串后附加一个或两个=符号,这在默认情况下是CI不允许的 下面是一个例子: 现在我知道我可以允许=sign-in-config.php,但我不完全理解这样做的安全含义(它一定是因为某种原因被禁用的,对吧?) 有人知道为什么在URL中使用=符号可能是个坏主意吗 谢谢! John。最初,url中根本没有任何有害字符。但是,没有经验丰富

我有一个加密的、base64编码的数组,我需要将其放入url并插入发送给客户端的电子邮件中,以使它们能够被识别(唯一)-问题是base64_encode()经常在其字符串后附加一个或两个=符号,这在默认情况下是CI不允许的

下面是一个例子:

现在我知道我可以允许=sign-in-config.php,但我不完全理解这样做的安全含义(它一定是因为某种原因被禁用的,对吧?)

有人知道为什么在URL中使用=符号可能是个坏主意吗

谢谢!
John。

最初,url中根本没有任何有害字符。但是,没有经验丰富的开发人员或写得不好的软件帮助某些角色变得邪恶


=
-我看不出在URL中使用它有任何问题不知道为什么
=
是不允许的,但是您也可以去掉等号

$base_64 = base64_encode($data);
$url_param = rtrim($base_64, '=');
// and later:
$base_64 = $url_param . str_repeat('=', strlen($url_param) % 4);
$data = base64_decode($base_64);
base64规范只允许在字符串末尾使用
=
符号,它们纯粹用作填充,不存在数据丢失的可能性


编辑:它可能不允许将此作为兼容性选项。我没有理由从安全性的角度来考虑,但它可能会干扰到工具链中某个地方的查询字符串解析。

请将“=”字符添加到$config['allowed\u uri\u chars']在config.php文件中,您可以在application/config文件夹中找到该文件,而不是更新配置文件,您可以使用本机php的urlencode和URLEDECODE功能

$str=base64_encode('test');
$url\u to\u be\u send=urlencode($str);
//通过url发送
//现在在接待方面
//假设通过get传递的值存储在$encoded_str中

$decoded_str=base64_decode(urldecode($encoded_str))*是的,它确实是加密的,也已编码。如果使用段,CI不允许“=”。如果启用查询字符串,“=”将完全合法(当然)