代码标志器 3 无法访问错误消息

2022-08-30 18:43:29

我在Codeigniter 3中set_rules函数

我检查用户电子邮件:

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|valid_email');

当我发布时得到这个错误:

无法访问与您的字段名称电子邮件对应的错误消息。


答案 1

来自 codeigniter github :

关于XSS清理的一个很大程度上未知的规则是,它应该只应用于输出,而不是输入数据。

我们在自动和全局XSS清理功能中犯了这个错误(请参阅上面关于XSS的上一步),所以现在为了阻止这种做法,我们还从官方支持的表单验证规则列表中删除了“xss_clean”。

由于表单验证库通常验证输入数据,因此“xss_clean”规则根本不属于它。

如果您真的非常需要应用该规则,您现在还应该加载安全助手,其中包含xss_clean()作为常规函数,因此也可以用作验证规则。

友情链接 : https://github.com/bcit-ci/CodeIgniter/blob/develop/user_guide_src/source/installation/upgrade_300.rst#step-13-check-for-usage-of-the-xss_clean-form-validation-rule

如果,尽管有一切,你真的需要它,去应用程序/配置/自动加载.php:

$autoload['helper'] = array('security');

或者,在表单验证之前

$this->load->helper('security');

答案 2

xss_clean不再是表单验证的一部分。

另一种方法是不使用它,因为xss_clean正在进行消毒而不是验证。xss_clean是安全助手的一部分。如果需要,请在验证后执行此操作。

 $this->load->helper('security'); `
 $value = $this->input->post('email',TRUE); //where TRUE enables the xss filtering

此外,您还可以在配置.php文件中启用全局 xss 筛选

$config['global_xss_filtering'] = TRUE;


推荐