CodeIgniter表单上的XSS过滤

Mr.*_*h67 3 php model-view-controller controller codeigniter view

我目前正在学习框架"CodeIgniter".但我的表单验证有问题.首先,让我告诉你我的观点:

<form method="post" action="connexion">
  <label for="pseudo">Pseudo : </label>
  <input type="text" name="pseudo" value="" />

  <label for="mdp">Mot de passe :</label>
  <input type="password" name="mdp" value="" />

  <input type="submit" value="Envoyer" /></form>
Run Code Online (Sandbox Code Playgroud)

我的控制器:

public function connexion()
{
    $this->load->library('form_validation');

    $this->form_validation->set_rules('pseudo', '"user name"', 'trim|required|min_length[5]|max_length[52]|alpha_dash|encode_php_tags|xss_clean');
    $this->form_validation->set_rules('mdp',    '"password"',       'trim|required|min_length[5]|max_length[52]|alpha_dash|encode_php_tags|xss_clean');

    if($this->form_validation->run())
    {
        $this->load->view('connexion_ok');
    }
    else
    {
        $this->load->view('form');
    }
}
Run Code Online (Sandbox Code Playgroud)

当我在set_rules()中删除控制器中的"xss_clean"过滤器时,它运行正常,表单有效.如果存在"xss_clean",则它不起作用,它在其他地方.我在输入中不使用特殊字符,只使用字母.

在设置中我把它设为true:$ config ['global_xss_filtering'] = TRUE;

我读到某处"xss_clean"过滤器没用.我还能用什么?也许帮助者或其他什么?谢谢

DFr*_*end 8

首先,$config['global_xss_filtering'] = FALSE;你不需要或一直想要这个.此配置设置已正式弃用.它将来可能会消失.

其次,如果您使用的是3.0.x版,则从验证规则中删除"xss_clean".它不在官方支持的表单验证规则列表中.

您可以使用XSS过滤的地方是使用输入类从POST,GET,COOKIE或SERVER获取数据.大多数输入方法都有第二个参数,可以通过运行数据xss_clean().示例:$this->input->post('some_data', TRUE);将获取$_POST['some_data']并运行它的值xss_clean().如果第二个参数为FALSE(或省略),xss_clean()则不使用.


Vit*_*ira 5

我不同意DFriend的回答.

CodeIgniter文档:

应该在输出上执行XSS转义,而不是输入!

因此,他提出的解决方案实际上会对弃用的全局配置执行相同的操作$config['global_xss_filtering'] = TRUE;,不同的是添加更多代码和手动工作,为每个配置添加额外的bollean参数$this->input->post.

正确的方法是使用set_value你的观点:

<input type="password" name="mdp" value="<?=set_value('mdp')?>" />

此功能默认过滤XSS漏洞:

set_value($ field [,$ default =''[,$ html_escape = TRUE]])

  • 我同意.应该在输出上执行XSS转义,而不是输入.但问题是关于为什么验证失败而不是何时执行XSS转义.每个Web开发人员都应阅读并遵循[XSS(跨站点脚本)预防备忘单](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet)网页上的建议. (2认同)