Codeigniter和百分比登录URL,再次

时间:2015-06-30 00:11:41

标签: codeigniter

我知道Codeigniter内置了安全性,可以在检查列入白名单的特殊字符之前对URL进行解码。例如,如果我有一个包含%3d的URL,则Codeigniter解码为=符号,然后检查=是否列入白名单。

但是,如果我需要按原样传递%3d,不进行解码然后与白名单进行比较,除非我将%符号列入白名单?我只想传入%3d并返回%3d,而不必将=添加到我的白名单。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

CodeIgniter检查密钥的值是否允许使用字符,并且您可以使用$config['permitted_uri_chars']对其进行配置,但是您获得的错误消息与密钥本身有关,而与其值无关。在这种情况下,$config['permitted_uri_chars']无法帮助您允许%符号。

您将找到检查function _clean_input_keys($str)中的键的功能system/core/input.php(第727行)。不允许使用%字符,因此'%40'无法通过:

 if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))

在你的情况下解决这个问题的唯一方法是在关键参数中避免使用这个字符。