2013-03-08 4 views

답변

1

이것은 두 가지 이유로 고려하는 것은 위험합니다.

먼저 이스케이프 처리 유형은 변수가 출력되는 컨텍스트에 따라 다릅니다. 예 : 일부 HTML의 중간에 문자열을 출력하려면 일부 <script> 태그 내에서 출력하거나 HTML 속성의 값으로 출력하는 것보다 다른 문자가 이스케이프되어야합니다.

둘째, 개체에 대해 어떻게 할 것입니까? echo $this->nameecho $this->user->name (여기서 $this->user은 클래스의 인스턴스 임)을 고려하십시오. 후자의 예에서 ->name은 심지어 __get() 호출의 결과 인 동적으로 생성 된 문자열 일 수 있습니다. 이것을 자동 이스케이프 할 수있는 방법이 없으므로 데이터의 일부가 자동 이스케이프되고 일부는 자동 이스케이프되지 않는 상황이 발생합니다. 그것은 틀림없이 잘못된 보안 감각을 제공하기 때문에 아웃 - 오브 - 더 - 박스 탈출 - 그것 - 스스로 접근보다 덜 안전합니다.

+0

문제가 발생하지 않습니다. HTML 이스케이프에만 관심이 있다고 가정 해 보겠습니다. 당신의 의견을 통해'$ this-> escapeHtml' 호출을하는 것은 약간 자세한/반복적/추악한 것 같습니다. 그렇다면 기본적으로 탈출하지 않는 이유는 무엇입니까? Smarty에서 그렇게하는 방법은 다음과 같습니다. $ smarty-> escape_html = true;/이스케이프 처리 : {$ variable}/이스케이프 처리되지 않음 : {$ variable nofilter}. 자동 이스케이프 기능이 사용자가 제공 한 예제를 처리 할 수없는 이유가 없습니다. 그것은 단순히 호출로부터 반환 값을 얻고 HTML은 그것을 이스케이프합니다. –

1

사용자 정의 스트림 처리기를 사용하는 사용자 정의보기 클래스를 사용하여 구현할 수 있다고 생각합니다.

이러한 구현에 대한 자세한 내용은 Rob Allen ()에서 제공됩니다.