2010-07-05 2 views
2

한두 주 전 Zend Framework를 사용하기 시작했고 Zend_View :: escape()를 사용하여 수동으로 탈출하는 데 어려움을 겪었습니다. $ this-> escape() 또는 출력 버퍼링 및 PREG 대체 * .phtml 파일과 같은 까다로운 방법을 사용하지 않고 자동으로 템플릿 (Zend_View 템플릿)에서 vars를 이스케이프하는 방법을 아는 사람이 있습니까?Zend_View에서 자동으로 vars를 벗어나는 가장 좋은 방법은 무엇입니까?

이 경우 가장 좋은 방법을 알고 싶습니다.

+0

가 추가 될 예정 탈출 Zend Framework 2.0 – opHASnoNAME

답변

0

당신은 "자동"이라고 말했기 때문에 나는 그것이 $ this-> var 에코를 할 때를 의미한다고 생각합니다; 너 탈출을 원해. 변수가 뷰에 설정되어있을 때 이스케이프를 수행 할 수 있습니다. AFAIK는 Zend_View_Abstract 클래스 '__set magic method * (라인 300 주변)에서 완료되었습니다. 핵심 ZF 코드를 변경하는 것은 권장되지 않으므로 Z_V_A 또는 Z_V를 확장하여 __set 메서드를 재정의 할 수 있습니다.

* 저는 Z_V_A :: __ 세트가 뷰에 할당 된 유일한 장소이지만 100 % 확실해야한다고 생각합니다. 그것을위한 다른 장소를 생각할 수 없다.

편집 : 개인적으로 나는 이것을 피하고 좋은 '$ this-> escape()를 사용합니다. 더 많은 타이핑을하지만 배경에서 진행되는 마술은 적습니다.

+0

조언 해 주셔서 감사합니다. 그러나 나는이 사건에 대해 다소 과감한 해결책을 원한다. 좋은 $ 'this-> escape() 코드를 수동으로 작성하면 탈출하고 앱을 XSS에 취약하게 만드는 것을 잊을 수 있습니다. "가장 큰 문제는"멋진 ZF가 Smarty 또는 심포니 사용자에게 얼마나 멋진지를 설명하는 것이 더 어렵다는 것입니다. 둘 다 함께 출력을 자동 탈출 할 수 있습니다. – chikaram

0

당신이하고있는 일이 이미 끝난 후 최선의 방법을 요구했습니다. 출력 목적으로 만 데이터를 수정하기 전에 데이터를 표시 할 때까지 기다리십시오.

나는 당신이 writting -> escape() 매번 지루한 찾을 수 있지만 이해가 여전히 길을 이해합니다.

모든 항목을 자동으로 이스케이프 처리해야하는 경우 언젠가 이스케이프 처리되지 않은 데이터가 필요하거나 필요할 때 문제가 발생합니다.

+0

귀하의 요지를 이해합니다. symfony와 Smarty를 사용하면 지루한 것들을 코딩 할 필요가 없습니다. – chikaram

2

Zend_View를 확장하여 사물을 자동으로 자르는 사용자 정의 뷰 클래스를 만들거나 뷰 헬퍼를 사용하여 자동 이스케이프를 켜거나 끌 수 있습니다.

나는 두 가지 접근 방식에 대한 예제 코드와 함께, 그것에 대해 블로그 게시물을 작성했습니다 : 우리가 최소한의 성능 저하와 함께, 자동으로 모든보기 변수를 탈출 사용자 정의 스트림 래퍼를 구축 파이크 프로젝트에서 How to automatically escape template variables in Zend_View

+0

정말 고마워요. 접근 방식은 괜찮아 보입니다. 그러나 그 방법은 메소드에 의해 리턴 된 값을 벗어날 수 없다는 것입니다. E.G. 내 서식 파일에서 나는 다음과 같이 나타납니다 : comment to $ comment) :?>

getText()?>

. escape ($ comment-> getTitle())?>과 같은 코드를 사용하고 싶지 않습니다. 정말 고통 스럽습니다. 다른 생각이 있다면 알려주시겠습니까? – chikaram

+0

+1 heh Jani, 블로그를 더 철저히 읽어야합니다. P – robertbasic

+0

함수에서 반환 된 값을 자동으로 처리 할 수 ​​있다고 생각하지 않습니다. 이것이 Zend_View의 작동 방식에 대한 제한 사항입니다. 뷰 스크립트를 처리하고 짧은 태그가 작동하도록 변경하는 짧은 태그 용 구문 분석기가 있습니다. 모든 방법에 이스케이프 호출을 추가하는 것과 비슷한 접근법을 사용할 수는 있지만 느리고 까다로울 수 있습니다. –

2

이상! 당신은 여전히 ​​함께 RAW 값을 얻을 수 있습니다 :

<?=~ $variable ?>

공지 사항은 "~"문자. 체크 아웃 http://code.google.com/p/php-pike/wiki/Pike_View_Stream

난 당신이 "출력 버퍼링과 레그로는 *로 .phtml 파일을 교체. 같은 교묘 한 방법"피하려고했다 알지만, 여전히 프레임 워크 1.

젠드에서 탈출 자동차를 해결하기 위해 매우 깔끔한 방법이라고 생각
0

ZendX_View_Autoescaping이 프로젝트는 모든 할당 된보기 변수의 자동 이스케이프 기능을 갖춘 ViewRenderer를 제공합니다.

https://github.com/jensklose/ZendX_View_Autoescaping

사용해보기!

이 지원

  • 는 탈출 문맥 전환 배열 키를
  • 가능성 탈출 깊이 데이터 구조
  • 로 (HTML, JSON nofilter)
관련 문제