Skip to content
k1LoW edited this page Feb 7, 2011 · 12 revisions

Escape plugin

Escape pluginはViewにセットされる値を自動でエスケープするプラグインです。

Escape pluginの処理のしくみ

Escape pluginは現在2つのタイプで値を自動エスケープします

encode/decodeタイプ

  • Escape.EscapeComponent::beforeRender()でViewにセットされる値と、$this->dataをh()とほぼ同じ関数で自動エスケープしています。
  • Viewファイル上でエスケープしていない値を使用したい場合、d()でエスケープした結果をhtml_entitiy_decodeを利用してデコードします。

Objectタイプ

  • Escape.EscapeComponent::beforeRender()でViewにセットされる値と、$this->dataをオブジェクト化し、元データとh()とほぼ同じ関数で自動エスケープした値をセットします。
  • Viewファイル上でエスケープしていない値を使用したい場合、raw()メソッドで元データを取得します。

課題

  • $this->dataも自動エスケープされているべきと思っています。ただ、FormHelper::input()で呼ばれる場合は、自動でデコードが走っていてほしい。
    • 理想は「開発者は普段通りFormHelperを使っている」ようにみせかけたい。
    • それともそもそも$this->dataはエスケープしない???
    • $this->dataをエスケープしないようにするためのメソッド、プロパティを用意?

<?php foreach($posts as $post) {echo $post['Post']['title'];} ?>