サニタイジングと URL 自動リンクのジレンマ 2
PHP の場合。こんなコードを書いてる掲示板が多いようで。
// 投稿されたメッセージを取得して
$message = $_POST[ "message" ];
// HTML サニタイジングして
$message = htmlspecialchars( $message );
// URL をリンクに変換
$message = ereg_replace( "(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $message );
上と全く同じじゃなくても
1. HTML の特殊文字を変換
2. URL 自動リンク
という順番で処理を行ってるとちょっとまずいことになっちゃいます。
<a href="http://exsample.com/test.cgi?page=10&mode=post">test</a>
この文字列を上の処理にかけると・・・
<a href="http://exsample.com/test.cgi?page=10&mode=post">test</a>
いきすぎちゃってるよ!
という感じで太字の部分がリンクに変換されちゃいます。おかしいです。
何でそうなるかは今度書く罠。
カテゴリ
developmentトラックバック(0)
このブログ記事を参照しているブログ一覧: サニタイジングと URL 自動リンクのジレンマ 2
このブログ記事に対するトラックバックURL: http://je-pu-pu.jp/blog/mt-tb.cgi/158

<a という文字を検出したら閉じタグまでHTMLをparseするモードに切り替わって処理するというのはどうか.
いややってみないとわかんないけど.
実はもう解決してるけど一気に書くのがめんどくさいので小出しにしている罠。
にゃにぃぃぃ