Php CodeIgniter';s表单验证库处理XSS筛选?

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函

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 POST
data
username
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')后,任何脏数据都将被清除。你必须把第二个论点置为真