2011-05-06 2 views
0

내 ci 사이트의 관리자 전용으로이 코드를 사용하고 있는데,이 db insert는 안전합니까?이 codeigniter 활성 레코드 쿼리가 안전합니까?

function addCategory(){ 
    $data = array(
    'name'=> $_POST['name'], 
    'shortdesc'=>$_POST['shortdesc'], 
    'longdesc' => $_POST['longdesc'], 
    'status'=>$_POST['status'], 
    'parentid' => $_POST['parentid'] 

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

답변

2

나는 이런 식

태클 추천 할 것입니다 :

$data = array(
    'name' => $this->input->post('name'), 
    ... etc ... 
); 

또는를 POST 값이 없을 때 당신은 기본 값을 설정하려면

$data = array(); 
foreach($_POST as $key => value) 
{ 
    if ($this->input->post($key)) // if a value is set 
    { 
     $data[$key] = $this->input->post($key, true); //protect against xss 
    } 
} 

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

당신이 설정되지 않은 지정된 정적 값 중 하나, 그들은

5

코드 이그니 터가 올바르게 값을 이스케이프 처리합니다. 즉, 입력 클래스를 사용하여 게시물 데이터를 가져와야합니다. 뿐만 아니라 그 가치의 당신이 경고가 밖으로 분출받지 않습니다 설정되지 않은 경우 당신이 그것을 설정 파일에서 그 방법을 설정 한 경우 자동으로 XSS 대 보호 할 수 있습니다 :

$name = $this->input->post('name'); 

$data = array(
    'name' => $name, 
    ... etc ... 
); 

또한 기능을 넣을 수 있습니다 배열에 직접 전화 :

// php 5.3+ 
$data = array(
    'name' => $this->input->post('name') ?: 'default' 
); 

// older 
$data = array(
    'name' => $this->input->post('name') ? $this->input->post('name') : 'default' 
); 
+0

이 입력 방법은하지 않습니다 (그들이 설정되지 않은 경우 $this->input->post() 반환) false로 데이터 삽입에 추가되지 않는 경우이 방법 자동으로 xss를 보호합니다. – jondavidjohn

+0

설정에서 활성화하면 어떻게됩니까? "그런 식으로 설정하면"이라고 썼습니다. $ config [ 'global_xss_filtering'] = TRUE; – Erik

+0

"당신이 그런 식으로 설정하면"무엇이든 의미 할 수 있기 때문에 명확히하고 싶을 수도 있습니다. – jondavidjohn

관련 문제