1

ドキュメントはメソッドをZend_View示していescape($var)ます。また、表示する変数ごとに手動で呼び出す必要があることも示唆しています。$this->escape($this->var);

Zend_View自動的に脱出するために拡張する方法はありますか?

4

2 に答える 2

1

これは、2つの理由から考慮すると危険なことです。

まず、必要なエスケープのタイプは、変数が出力されるコンテキストによって異なります。<script>たとえば、一部のHTMLの途中で文字列を出力するには、一部のタグ内で、またはHTML属性の値として出力する場合とは異なる文字をエスケープする必要があります。

次に、オブジェクトについてどうしますか?echo $this->namevs.を検討してください(クラスのインスタンスはecho $this->user->nameどこにありますか)。$this->user後者の例では、呼び出し->nameの結果である動的に生成された文字列である可能性もあり__get()ます。これを自動エスケープする方法はないため、データの一部が自動エスケープされ、一部が自動エスケープされない状況になります。間違いなく、これは、すぐに使用できるエスケープ・イット・ユアセルフのアプローチよりも安全性が低くなります。これは、誤った安心感をもたらすためです。

于 2013-03-08T18:19:28.817 に答える
1

これは、カスタムストリームハンドラーを使用するカスタムViewクラスを使用することで実装できると思います。

このような実装の詳細は、Rob Allen(http://akrabat.com/zend-framework/a-view-stream-with-zend_view/ )によって提供されています。

于 2013-03-08T18:19:45.587 に答える