0

この質問にタイトルを付ける方法がよくわかりませんでしたが、ここにあります。私は常に CodeIgniter のフォーム検証クラスを使用して、フォーム情報を検証しています。私のアプリケーションには、登録した他のメンバーが使用するフォームがあります。たとえば、誰かがブログ記事にコメントを投稿したい場合、その記事のフォームを使用します。

私のコントローラーが次の場合:

class ブログは CI_Controller を拡張します {

     関数 postcomment($blog_id){

          if($this->form_validation->run('comment') == FALSE){

               $this->parser->parse('comment_form.tpl', $data);

          } そうしないと {

               $this->blog_post->create_comment($blog_id);

          }

     }

}

私のモデルは...

クラス Blog_Post は CI_Model を拡張します {

     関数 create_comment($blog_id){

         $data = 配列(
               'タイトル' => $this->input->post('タイトル'),
               'コンテンツ' => $this->input->post('コンテンツ'),
               '日付' => 時間()
              );

          $this->db->insert('blog_comments', $data);

     }

実際に挿入する前に情報を検証するために、preg_match、strlen、isset などを使用する必要はありますか?

4

3 に答える 3

0

ただし、以前に form_validation 検証を使用して、郵便で送信されたデータを挿入した場合

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);
于 2013-09-17T08:35:31.470 に答える
0

Codeigniter でさえ、すでにセキュリティを実装しています。以下を実装することは依然としてベストプラクティスです。

  1. 汚染されているかのようにデータをフィルタリングします。(xss フィルタリングを使用)
  2. データを検証して、正しい型、長さ、サイズなどに準拠していることを確認します (この手順で手順 1 を置き換える場合があります)。
  3. データベースに送信する前にデータをエスケープします。

ここでこれを読みますhttp://ellislab.com/codeigniter/user-guide/general/security.html

于 2013-06-27T08:12:58.927 に答える