Php CodeIgniter';s表单验证库处理XSS筛选?
CodeIgniter表单验证库提供了从正在验证的表单“准备”数据的选项。以下是文档中的一个片段:Php CodeIgniter';s表单验证库处理XSS筛选?,php,validation,codeigniter,Php,Validation,Codeigniter,CodeIgniter表单验证库提供了从正在验证的表单“准备”数据的选项。以下是文档中的一个片段: $this->form_validation->set_rules('username'、'username'、'trim | required | minu|length[5]| max|u length[12]| xss|u clean') 末尾的xss_clean参数通过xss_clean函数传递post数据 我想知道如何使用$\u POSTdatausername?xss\u clean函
$this->form_validation->set_rules('username'、'username'、'trim | required | minu|length[5]| max|u length[12]| xss|u clean')代码>
末尾的xss_clean
参数通过xss_clean
函数传递post数据
我想知道如何使用$\u POST
datausername
?xss\u clean
函数是否直接作用于$\u POST
变量,这样我就可以执行:$username=$this->input->POST('username')代码>,并实际获取过滤后的数据?如果我把最后一条语句放在验证行之前呢?在这种情况下,$username
是否包含未过滤的数据?提前谢谢 从
“如果遇到任何不允许的情况,则通过将数据转换为字符实体来确保安全”
因此,是的,在使用xss选项set通过表单验证运行$this->input->post('username')之后,任何脏数据都将被清除
是的,如果您将该语句放在验证行之前,它将不会被清理
请注意,您可以在所有表单提交的数据上全局运行xss,这样您就不需要将其包含在验证规则中。我强烈建议您查看system/libraries/Input.php,您可以确切地看到其中的工作是如何完成的
我总是建议打开全局xss_。这对性能几乎没有影响,除非您不是故意在某些字段上检查xss。验证会清除xss,但与$this->input->post('username')
无关。这行代码将自动清理xss,完全独立于验证内容(假设启用了全局xss筛选)。事实上,我敢打赌两种方法都会让xss清理它两次,因为我很确定验证只会创建数组的一个副本。它实际上不会修改$\u POST
但正如我所说,如果您通过$this->input->post('username')
访问它,它将被清除。您提到的$this->input->post('username')将被xss自动清除。如果将TRUE作为第二个参数传递,不是只有xss才会清除它吗?《用户指南》说,通过将第二个参数设置为TRUE可以启用XSS过滤器,因此,在使用XSS选项set通过表单验证运行$this->input->post('username')后,任何脏数据都将被清除。你必须把第二个论点置为真