2010-12-27 7 views
2

codeigniterのセキュリティの1つは、uriが期待している数字かどうかをチェックすることです!ここ はコードです:ページ番号のためにuriが数字であるかどうかを確認するcodeigniterセキュリティチェック

$this->load->helper('form'); 
    $this->load->library('pagination'); 
    $config['permitted_uri_chars'] = '0-9'; 
    $config['base_url'] = '/member/index'; 
    $config['per_page'] = 5; 
    $config['num_links'] = 10; 
    $query_not_voted_rows = "SELECT p_id FROM photos WHERE p_id NOT IN (SELECT distinct p_id FROM p_votes where u_id = ".$this->session->userdata('u_id').")"; 
    $config['total_rows'] = $this->db->query($query_not_voted_rows)->num_rows(); 
    $config['full_tag_open'] = '<div id="pagination">'; 
    $config['full_tag_close'] = '</div>'; 
    $this->pagination->initialize($config); 

    if($this->uri->segment(3) == '') 
    { 
     $segment_url = 0; 
    }else{ 
     $segment_url = $this->uri->segment(3); 
    } 
    $query_not_voted = "SELECT * FROM photos WHERE p_id NOT IN (SELECT distinct p_id FROM p_votes where u_id = ".$this->session->userdata('u_id').") LIMIT ".$segment_url.", ".$config['per_page']; 

しかし、今、誰かがURIセグメントに入った場合:「kdkdkdd」、そしてSQL休憩を、$segment_urlはkdkdkddない数ですので!

質問には、これをどのようにエスケープするのですか?

答えて

3

これは私のシンプルなソリューションです:

if($this->uri->segment(3) == '') 
     { 
      $segment_url = 0; 
     }else{ 
      if(!is_numeric($this->uri->segment(3))){ 
      redirect('404'); 
      }else{ 
      $segment_url = $this->uri->segment(3); 
      } 
     } 

しかし、誰かがこのください...

0

素敵な仕事上の任意のより良いアイデアやチュートリアル=)

答え1 +

を持っている場合
<? 
$cadena = "sdfio9874673o4h784"; 

for ($i=0; $i<strlen($cadena); $i++) { 
if (is_numeric($cadena[$i])) {$cadena2.=$cadena[$i];} 
} 

echo $cadena2; 
?> 

=素敵なコード