codeigniter不允许的键字符 - 允许所有字符时

时间:2011-05-26 05:32:23

标签: php codeigniter

  

可能重复:
  CodeIgniter Disallowed Key Characters

我最近将CI从1.7升级到2.0。在我开始接收CI的

之后
  

不允许使用关键字符

错误。

然后我允许接受所有字符以查看错误是否会消失。

$config['permitted_uri_chars'] = '';

然而,这并没有改变任何事情

我也启用了查询字符串

$config['enable_query_strings'] = TRUE;

当我允许接受所有字符时,我只是不知道为什么我得到了不允许的字符错误。

这是一个url示例,我将获得不允许的关键字符错误:

http://localhost/myapp/index.php??c=user&m=login

但是,如果我要删除其中一个'?'它的工作原理

http://localhost/myapp/index.php?c=user&m=login

我有一个包含以下内容的htaccess文件:

RewriteEngine on
RewriteRule (.*)/index.php $1/ [L]

任何帮助?

2 个答案:

答案 0 :(得分:2)

看起来CodeIgniter会对GET / POST /和cookie数据键名进行单独检查,并对其进行验证:

/^[a-z0-9:_\/-]+$/i

请参阅:https://bitbucket.org/ellislab/codeigniter/src/c2dad3edb148/system/core/Input.php#cl-537

除了编辑/子类化Input.php之外,我没有看到一种简单的方法来禁用此检查。不管怎么说,你最好不要使用没有奇怪符号的键。

答案 1 :(得分:1)

正如代码评论中所述,你正在做的事情是灰心丧气

| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!

尽管如此,可能的解决方案是清除您的缓存,尤其是 Cookie ,例如,您可以在this中看到关于CI论坛的主题(以及在较小程度上,您只是在谷歌上搜索其他资源)

编辑:发布后我看到你编辑了你的问题,并添加了重要的细节。正如其他用户所建议的那样,您需要检查输入类以破解codeigniter如何实现自己的POST和GET处理。

特别是,我正在寻找库/ input.php中的function _clean_input_keys($str),并在那里更改正则表达式