Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 是否需要重新验证CodeIgniter表单中的信息?_Security_Codeigniter_Validation - Fatal编程技术网

Security 是否需要重新验证CodeIgniter表单中的信息?

Security 是否需要重新验证CodeIgniter表单中的信息?,security,codeigniter,validation,Security,Codeigniter,Validation,我真的不知道该如何命名这个问题,但现在它来了。我总是使用CodeIgniter的表单验证类来验证我的表单信息。在我的申请表中,有一些表格供其他注册会员使用。例如,如果有人想在博客文章上发表评论,他们会使用该文章的表单 如果我的控制器是: class Blog extends CI_Controller { function postcomment($blog_id){ if($this->form_validation->run('comment') == FA

我真的不知道该如何命名这个问题,但现在它来了。我总是使用CodeIgniter的表单验证类来验证我的表单信息。在我的申请表中,有一些表格供其他注册会员使用。例如,如果有人想在博客文章上发表评论,他们会使用该文章的表单

如果我的控制器是:

class Blog extends CI_Controller { function postcomment($blog_id){ if($this->form_validation->run('comment') == FALSE){ $this->parser->parse('comment_form.tpl', $data); } else { $this->blog_post->create_comment($blog_id); } } } 类Blog扩展CI_控制器{ 功能后指令($blog\u id){ if($this->form\u validation->run('comment')==FALSE){ $this->parser->parse('comment\u form.tpl',$data); }否则{ $this->blog\u post->create\u comment($blog\u id); } } } 我的模特是

class Blog_Post extends CI_Model { function create_comment($blog_id){ $data = array( 'title' => $this->input->post('title'), 'content' => $this->input->post('content'), 'date' => time() ); $this->db->insert('blog_comments', $data); } 类Blog_Post扩展了CI_模型{ 函数create\u comment($blog\u id){ $data=数组( 'title'=>this->input->post('title'), 'content'=>this->input->post('content'), “日期”=>时间() ); $this->db->insert('blog_comments',$data); }
是否需要使用preg_match、strlen、isset等在信息实际插入之前对其进行验证?

这取决于您的需要,而CI的
表单验证
提供了
正则表达式、唯一、最大长度、isset..等验证

如果您对此有任何自定义验证,如计算或百分比>而不是输入编号,它还提供
回调
函数,根据您的需要验证总计

一些主要的验证规则是


下面是您需要完成的所有内容,即使Codeigniter已经实现了安全性

  • 过滤数据,就像它被污染一样。(使用xss过滤)
  • 验证数据,确保其符合正确的类型、长度、尺寸等(有时此步骤可以替代第一步)
  • 在将数据提交到数据库之前对其进行转义

  • 我在这里读到了这篇文章。

    但是如果您之前使用表单验证 插入邮寄的数据

    我应该启用XSS吗

    $this->input->post('any_input',TRUE)

    //campos de la tabla y datos a insertar
                    $dataUsuario = array(
                                'matr_user'         => 'guest-'.date("whis"),//hora-min-seg-dia
                                'pass_user'         => $passHash,
                                'nom_user'          => capitalizar($this->input->post('tx_nom')),
                                'ap_user'           => capitalizar($this->input->post('tx_ap')),
                                'am_user'           => capitalizar($this->input->post('tx_am')),
                                'sex_user'          => $this->input->post('tx_sex'),
                                'nomfull'           => $nom_completo,
                                'fnaci_user'        => $this->input->post('tx_naci'),
                                'curp_user'         => $this->input->post('tx_curp'),
                                'callenum_user'     => capitalizar($this->input->post('tx_calle')),
                                'col_user'          => capitalizar($this->input->post('tx_col')),
                                'cp_user'           => $this->input->post('tx_cp'),
                                'ciud_user'         => capitalizar($this->input->post('tx_city')),
                                'estad_user'        => capitalizar($this->input->post('tx_estado')),    
                                'fech_ins_user'     => $this->fecha_server(),
                                'time_ins_user'     => $this->hora_server(),
                                'ip_ins_user'       => $this->ip_usuario(),
                                'operador_ins_user' => $this->session->userdata('username'),
                                'fech_upd_user'     => '0000-00-00',
                                'time_upd_user'     => '00:00:00',
                                'ip_upd_user'       => '0',
                                'operador_upd_user' => 'sinuser'
                            );
    
                    //inicia transacciones
                    $this->db->trans_start();
    
                    //insertamos datos
                    //llamamos al metodo del modelo que realiza las inserciones                 
                    $consulta_idUser = $this->usuario->create_usuario($dataUsuario);