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

[版本 3.x] 关于接收表单值处理的问题

[复制链接]
发表于 2015-5-31 12:28:28 | 显示全部楼层 |阅读模式
最近用某富文本编辑器做发布文章的功能。使用$this->input->post()  接收值存入数据库--然后在修改页面-将数据库的值再初始化到 富文本编辑器中。最后在编辑器中显示的内容,丢失了某一部分。
请教下有此经验的程序员们,CI的post接收数据之后是否再处理下才能存入数据库(不担心攻击问题)。

谁能帮助下???
发表于 2015-5-31 12:43:54 | 显示全部楼层
本帖最后由 Closer 于 2015-5-31 12:45 编辑

因為你開啟了 "XSS防禦"
他會將富文本編輯器內常見的 style='' 內所有值吃掉

XSS 防禦可以由三種方式開啟(你可以從這些地方關閉他們):
1. config.php 內的全域 XSS ( $config['global_xss_filtering'] = TRUE; )
2. POST、GET 或 COOKIE 的第二參數為 TRUE ( $this->input->post(NULL, TRUE); )
3. 表單驗證類使用了 xss_clean
 
 楼主| 发表于 2015-5-31 12:47:58 | 显示全部楼层
Closer 发表于 2015-5-31 12:43
因為你開啟了 "XSS防禦"
他會將富文本編輯器內常見的 style='' 內所有值吃掉

看过这个原因,感觉也没有敏感的字符过滤掉啊!还是post方法在存入数据库之前还需转义什么的呢?
可以把第二个参数改成false不?全局开着
发表于 2015-5-31 12:52:48 | 显示全部楼层
v阿杰 发表于 2015-5-31 12:47
看过这个原因,感觉也没有敏感的字符过滤掉啊!还是post方法在存入数据库之前还需转义什么的呢?
可以把第 ...

沒有用,除非你關閉全局
他的優先度是全局 > input > 表單驗證
 楼主| 发表于 2015-5-31 13:28:12 | 显示全部楼层
Closer 发表于 2015-5-31 12:52
沒有用,除非你關閉全局
他的優先度是全局 > input > 表單驗證

为了这个问题我都换了好几个编辑器了!
看来就是这个问题了,
如果关闭xxs的话。
是否需要使用转义函数了呢
例如encode_php_tags
发表于 2015-5-31 13:33:03 | 显示全部楼层
v阿杰 发表于 2015-5-31 13:28
为了这个问题我都换了好几个编辑器了!
看来就是这个问题了,
如果关闭xxs的话。

不,你可以這樣做:
1. 關閉全局 XSS
2. 所有 POST / GET/ COOKIE 都上第二參數 = TRUE
3. 針對富文本的 POST 值的第二參數 = FALSE
4. 過濾富文本的內容進行轉義
 

本版积分规则