2013-03-10 138 views
1

我是一名初学者codeigniter开发人员,需要您的帮助。 我有一个表单,它被提交给控制器中的一个函数,我想对从表单接收的发布数据应用form_validation库规则。 所有我需要知道的是: 输入类中的$ config ['global_xss_filtering']开关是否与form_validation类中的xss_clean规则执行相同的工作?xss clean和全局xss过滤的区别

+0

如果我让开关打开,我会得到相同的结果吗? – goseo 2013-03-10 06:09:41

回答

2

是的,它是一样的。如果您已通过配置文件启用$ config ['global_xss_filtering'],则不必在表单验证中调用xss_clean,但如果已关闭$ config ['global_xss_filtering'],则必须调用xss_clean在表单验证中,您还必须在input-> post函数中添加额外的参数(TRUE或FALSE)以便执行xss过滤。见下文。

$name = trim($this->input->post('name',TRUE)); 

这将是有益的,如果你正在使用所见即所得的编辑器在你的应用程序,那么你必须关掉$配置[“global_xss_filtering”],你必须通过额外的参数输入 - >功能后像上面, TRUE - 启用筛选,FALSE禁用(无论您使用所见即所得编辑器)。

+1

虽然结果是一样的,但值得注意的是''global_xss_filtering'在'$ this-> input-> post('name',TRUE)'构造'CI_Input'时修改了实际的'$ _POST'数组改变'$ _POST'数组。如果在任何时候你意识到你需要一个变量来应用XSS过滤,你可能需要对代码进行一些大的修改才能得到它。最好是关闭'global_xss_filtering'并重载'CI_Input :: post()'将'$ xss_clean'默认为'TRUE'而不是'FALSE',然后总是通过'CI_Input ::'访问'$ _POST'变量post()'方法。 – 2013-03-27 19:45:29

+0

虽然这个答案是相当古老的。请解释为什么我们必须禁用wysiwyg编辑器的xss过滤器。对于这种情况,也为什么我们不能在这种情况下使用xss_clean也是$ this-> form_validation-> set_rules('description','description','required | xss_clean'); (错误)$ this-> form_validation-> set_rules('desc','desc','required'); (正确) – vishal 2015-06-02 14:51:19