Zend_View
의 documentation은 escape($var)
메소드를 나타냅니다. 또한 표시 할 각 변수에 대해 수동으로 호출해야한다고 제안합니다.젠드 뷰 - 할당 된 변수를 자동으로 이스케이프 처리
Zend_View
을 자동으로 이스케이프하도록 확장 할 수 있습니까?
Zend_View
의 documentation은 escape($var)
메소드를 나타냅니다. 또한 표시 할 각 변수에 대해 수동으로 호출해야한다고 제안합니다.젠드 뷰 - 할당 된 변수를 자동으로 이스케이프 처리
Zend_View
을 자동으로 이스케이프하도록 확장 할 수 있습니까?
이것은 두 가지 이유로 고려하는 것은 위험합니다.
먼저 이스케이프 처리 유형은 변수가 출력되는 컨텍스트에 따라 다릅니다. 예 : 일부 HTML의 중간에 문자열을 출력하려면 일부 <script>
태그 내에서 출력하거나 HTML 속성의 값으로 출력하는 것보다 다른 문자가 이스케이프되어야합니다.
둘째, 개체에 대해 어떻게 할 것입니까? echo $this->name
대 echo $this->user->name
(여기서 $this->user
은 클래스의 인스턴스 임)을 고려하십시오. 후자의 예에서 ->name
은 심지어 __get()
호출의 결과 인 동적으로 생성 된 문자열 일 수 있습니다. 이것을 자동 이스케이프 할 수있는 방법이 없으므로 데이터의 일부가 자동 이스케이프되고 일부는 자동 이스케이프되지 않는 상황이 발생합니다. 그것은 틀림없이 잘못된 보안 감각을 제공하기 때문에 아웃 - 오브 - 더 - 박스 탈출 - 그것 - 스스로 접근보다 덜 안전합니다.
문제가 발생하지 않습니다. HTML 이스케이프에만 관심이 있다고 가정 해 보겠습니다. 당신의 의견을 통해'$ this-> escapeHtml' 호출을하는 것은 약간 자세한/반복적/추악한 것 같습니다. 그렇다면 기본적으로 탈출하지 않는 이유는 무엇입니까? Smarty에서 그렇게하는 방법은 다음과 같습니다. $ smarty-> escape_html = true;/이스케이프 처리 : {$ variable}/이스케이프 처리되지 않음 : {$ variable nofilter}. 자동 이스케이프 기능이 사용자가 제공 한 예제를 처리 할 수없는 이유가 없습니다. 그것은 단순히 호출로부터 반환 값을 얻고 HTML은 그것을 이스케이프합니다. –
사용자 정의 스트림 처리기를 사용하는 사용자 정의보기 클래스를 사용하여 구현할 수 있다고 생각합니다.
이러한 구현에 대한 자세한 내용은 Rob Allen ()에서 제공됩니다.
https://github.com/jensklose/ZendX_View_Autoescaping – opHASnoNAME