0

在 CI用户指南中,它说“以下是所有可用准备功能的列表:”

xss_clean =通过 XSS 过滤功能运行数据.....

我的代码中的注释有我的问题。请阅读。

注意:对全局启用 xss 不感兴趣!!!

提前致谢

$this->form_validation->set_rules('select_language', 'Language', 'trim|required|xss_clean');

//Has this been cleaned above while validating and ready to be used or ...
$language = $this->input->post('text_fullname');

//... do I have to add true to run the data through the XSS filtering again myslef?
$language = $this->input->post('text_fullname', true);
4

2 回答 2

3

在您实际运行表单验证之前,不会过滤发布数据。

$this->form_validation->set_rules(
    'select_language',
    'Language',
    'trim|required|xss_clean'
);

// Unaltered $_POST input
$this->input->post('select_language');

$this->form_validation->run();

// Trimmed and xss_cleaned
$this->input->post('select_language');

另外:在我看来,xss 过滤在实际重要的地方使用更有意义,输出而不是输入。例如,如果 xss 过滤器在未来的版本中得到改进,您会想要利用它,对吗?如果您只过滤输入,那么在您的输出上再次运行 xss_clean 函数是不可能的,这违背了将其用作表单验证规则的目的。

于 2012-12-07T15:08:38.117 回答
0

正如其他答案所建议的,您需要先运行表单验证,但是!

$this->input->post('text_fullname')不会被清理,因为你设置了验证规则select_language而不是text_fullname

于 2012-12-07T15:11:56.500 回答