2008/1/31 木曜日

Smartyでescape

Filed under: 技術メモ — dev0000 @ 11:07:34 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをBuzzurl(バザール)に追加

PHPのhtmlspecialcharsにはENT_QUOTESを付ける

例えば、htmlspecialchars した値は安全だとして、Smarty などで次のように値を割り当てたとすると危険です。

<a href=”http://phpspot.net/php” onclick=”javascript:alert(‘{$assigned}’);”>test</a>

例えば、$assigned 変数に、「’);alert(document.cookie+’」なんていう値がはいっていたらcookieがalertされてしまいます。
<>だけエスケープしておけば大丈夫、ということはいえなくなってしまいます。

うーん。

なぜ、素直に {$assigned|escape} を使わないのか?
ってか、PHPの仕事でもここ2年ばかりはSmartyありきなのでhtmlspecialchars なんて殆ど使ってないぞ。
(引数がシンプルじゃないから)
というか、JavaScriptなんていうデリケートな部分に(POST、GET、SessionにしろDBからの値にしろ)ユーザの入力値をそのまま表示するなんてどんな状況?

ここ最近話題になっている、「PHPは初心者にやさしい。その反面穴だらけなアプリケーションが量産される」という文節を見て、「うーん」と思っているところにこれかぁ。。。

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

HTML convert time: 0.379 sec. Powered by WordPress ME