用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7238|回复: 14
收起左侧

[已解决] CI将多个空格及引号识别为Disallowed Key Characters

[复制链接]
发表于 2011-2-11 10:51:53 | 显示全部楼层 |阅读模式
测试环境:xampp1.73,html编辑器ckeditor+ckfinder,客户端jquery,CI是1.73。
在用jquery的ajax-post提交textarea中的中文文本,经过多次仔细比对后发现,CI将多

个空格、单引号、双引号之后的数据全部删除,或者干脆提示“Disallowed Key
Characters”。
查看本站帖子后怀疑是内建的过滤非法字符机制造成的,于是按照帖子中的方法将

config和input类修改,但依然如故!
请教该如何解决?
发表于 2011-2-11 11:17:16 | 显示全部楼层
是 Input.php 文件中的 _clean_input_keys() 函数造成的。
你可以修改这个源码,或者扩展 Input 类。
 楼主| 发表于 2011-2-11 11:19:32 | 显示全部楼层
我已经使用本站帖子中的方法修改过了,依然如故!
发表于 2011-2-11 11:24:19 | 显示全部楼层
修改了就不应该提示 Disallowed Key Characters 了。
并且,你肯定要修改 Input.php 才可能去掉 CI 的过滤,但是去掉过滤你就要自己保证安全了。

PS: 我为什么没碰到楼主的问题呢?CI 的用户手册也是用的 POST 提交,毫无问题。
 楼主| 发表于 2011-2-11 11:32:35 | 显示全部楼层
现在不提示Disallowed Key Characters,但多个空格及引号后的字符仍然被自动删除!?
我是新手,如果要在input中多匹配这些字符该怎么写?
谢谢!
发表于 2011-2-11 11:41:37 | 显示全部楼层
是不是和开启XSS_Clean有关?关掉试试?
 楼主| 发表于 2011-2-11 11:50:44 | 显示全部楼层
“var $use_xss_clean = FALSE;”这是关闭了吧
我现在终于发现了,在html编辑器中空格和引号及一部分字符的html代码都是以“&”开头的,CI会自动清除,并且终止php程序运行!
请问各位大哥,该如何是好!是要改正则表达式还是修改html编辑器呢,请详细介绍下方法!
发表于 2011-2-11 13:07:02 | 显示全部楼层
回复 7# haimi


    这肯定不是 CI 给你去掉的,因为我这里没这个问题,你可以看看 http://codeigniter.org.cn/user_guide,我用的是 1.7.2 版本。
 楼主| 发表于 2011-2-11 15:10:05 | 显示全部楼层
我看了手册似乎对这个问题没有多大帮助啊!
jquery-post提交时firebug显示数据是完整的,我的js提交部分代码:
var pretext=tertext.getData();获取ckeditor中的html
var pre_id=……       
var kc_id=……
        if (pretext!=''){
                $.ajax({
                   type: "POST",
                   url: "..",
                   data:"pretext="+pretext+"&pre_id="+pre_id+"&kc_id="+kc_id,
dataType: "json",   (data这样书写不知是否正确?)
                   success: function(data){……}
我换用kindeditor居然也是这个结果?例如输入英文“<>”就会被删除
 楼主| 发表于 2011-2-11 15:12:00 | 显示全部楼层
补充,英文“<>”的在ckeditor中自动转换为“&lt;&gt;“,因为包含“&”导致程序自动终止

本版积分规则