2012-03-27 4 views
0

좋은 하루!
나는 내가 Zend_Framework의 행을 저장할 때 내 데이터베이스를 보호 할 Zend_Framework의 이스케이프 된 입력 데이터

:

function addController() { 
.... 
    if ($form->isValid($_POST)) { 
    addRecods($form->getValues()); 
    } 
} 

class DbManager extends Zend_Db_Table_Abstract 
... 
function addRecords(array $array) { 
    $row = $this->createRow(); 
    $row->field1 = $this->field_from_form1; 
    $row->field2 = $this->field_from_form2; 
    .... 
    $row->save(); 
} 

어떻게 더 addRecords 함수에서 배열에서 입력 데이터를 탈출 할 수 있습니까?

고맙습니다!

+0

입니다. 양식이 Zend_Form 구성 요소를 통해 생성 되었습니까? – Liyali

답변

1

Zend_Db_Table_Row::save() 기능, internaly 데이터를 저장하는 Zend_Db_Adapter_Abstract::insert() 함수를 사용하여 발행한다. 차례로 당신을 위해 데이터를 인용합니다.

SQL 쿼리를 직접 작성해야하는 경우 Zend_Db_Adapter 클래스는 사용할 수있는 여러 인용 함수를 제공합니다. 여기에 대한 자세한 내용은 Quoting Values and Identifiers

+0

감사합니다. Zend_Db_Adapter_Abstract 클래스에서 대답 한 후에이 기능을 찾았습니다. public function insert ($ table, array $ bind) { .... foreach ($ bind as $ col => $ val) { $ cols [] = $ this-> quoteIdentifier ($ col, true); – vedmed

0

내가 볼 수있는 한, 당신은 적절한 방법으로 그것을하고 있습니다. 양식이 Zend_Form을 사용하여 작성된 경우 양식 요소에 filtersvalidators을 추가 할 수 있습니다.

내가 만드는 모든 양식 요소는 자동으로 StripTags (HTML 태그 제거) 및 StringTrim (원치 않는 공백 제거) 필터를 가져옵니다. StripTags은 HTML을 허용해야하는 경우 특정 태그 및 속성을 허용하도록 구성되어야합니다.

이상을 통해 유효성 검사기를 사용하면 대부분의 악의적 인 콘텐츠를 잡을 수 있습니다. 숫자 값이있는 라디오 버튼이있는 경우 Digit 유효성 검사기를 추가 할 수 있습니다. 문자열에 대한 Alnum는 악센트 (UTF8) 문자열을 나에게 이상한 결과를 제공하는 것,하지만 당신은 기본 ASCII를 기대한다면, 모든 validators 확인되어 있는지 확인합니다 Zend_Form::isValid()를 사용하여 자동으로 Zend_Form::getValues()을합니다 사용하여

주자가 될 수 모든 입력을 filters으로 트리거하십시오. 이미이 작업을 수행하고 있으므로 올바른 filtersvalidators을 추가해야 할 수 있습니다. 당신이 따옴표를 방지하기 위해 안전한 쿼리 작성의 나머지를 할 것입니다 Zend Framework의 DB 도구를 사용하여

+0

답변 해 주셔서 감사합니다! – vedmed

관련 문제