2009-05-14 3 views
1

필자는 모든 getRequest-> getParam ('x')을 수행 한 후에 코드에서 Zend 필터를 호출하고 싶지 않습니다. 마술처럼 getRequest 내부의 모든 것을 필터링하는 게으른 방법이 있습니까?Zend에서 getRequest() 매개 변수를 자동 필터링하는 방법이 있습니까?

편집 :내가 말할 때 필터, 내가 태그를 escapting XSS 관련을 청소하고, 모든 SQL 이스케이프 문자를 탈출, 의미한다.

즉 :

$myVar = $this->getRequest()->getParam('x'); 
filter the variable, escape sql stuf... etc 

표준은 무엇입니까? 어떻게 지내니?

답변

6

귀하의 상황을 처리 할 수있는 몇 가지 방법이 있습니다. 그래서

$params = $this->_request->getParams(); //_request is equivalent to getRequest() 

모든 의미하는 필터를 선언 할 때 *****을 사용하는 것입니다 모든 PARAMS을 필터링하는 게으른 방법 : 모든

첫째, 당신은 모두가 한 번에 PARAMS 얻을 수 있습니다 input filtersvalidators

$filters = array('*' => array('StringTrim','HtmlEntities','StripTags')); 
$input = new Zend_Filter_Input($filters,$validators,$params); 
if($input->isValid()) { 
    //blah blah blah 
} 

당신은 request 개체에 대한 자세한 내용을 읽어야 할뿐만 아니라 filters : 필드와 같을 것입니다.

0

karim79 님의 답변은 하나의 배열에서 매개 변수를 가져 오는 것입니다.

일반적으로 데이터 정리를 위해 요청별로 Zend_Filter가 필요하지 않습니다.

$this->escape($someUserSuppliedData) 

을하고 Zend_Db를 처리 할 때와 같은 삽입 및 업데이트 등의 몇 가지 방법 당신을 위해 데이터를 인용합니다 :

당신이보기에 데이터 출력을 탈출해야 XSS를 방지합니다. 쿼리를 수동으로 만들 때 quote

1

과 같은 Zend_Db 함수를 사용할 수 있습니다. 모든 방법으로 쿼리를 수행하는 것이 유일한 방법입니다.

  • 가 저장되는 방법으로 일을 필터링 (karim79에 의해 위에서 언급 한 바와 같이) 또는 유효성 검사가 필요한 경우, 검증 (Int, StringTrim 등으로 캐스팅, StripTags으로 제거 태그)에 의해보고 사용 Zend_Filter_Input

    -하지만 htmlentities는 db 검색 등에서 합병증을 피하기 위해 출력에서 ​​수행되어야하기 때문에 가능하지 않습니다. 대부분의 경우 필드는 개별적으로 flitered/validate되어야합니다. (->$this->escape()Zend_View_Helper_Escape) 필요

  • 사용 매개 변수화 된 쿼리 (?와 Zend_Db_Select 자리)는 항상, 또는 적어도

  • 탈출 모든 출력 DB를 탈출 기능을 사용합니다.

0

어쩌면 그는 getRequest() 메소드를 오버로드 한 다음 새로운 생성 된 메소드 요청 객체를 필터링 할 수있는 방법을 찾고있을 수도 있습니다.

체크 아웃 : http://framework.zend.com/manual/en/zend.controller.plugins.html 다음

방금 ​​있습니다 .. Zend_Filter 클래스를 사용하거나 자신의 필터 클래스 위의 과부하를 만들 수 있습니다

관련 문제