日記
キャッシュを表示する時に危険なスクリプトを排除する (19:26)Edit

キャッシングした他サイトのコンテンツを自サイトのURL上で表示した場合、そのコンテンツにスクリプトが含まれていると、そのスクリプトは自サイトのドメイン権限で実行できることになり、自サイトドメインのCookieなどをスクリプトから読まれてしまう可能性がある。で、そういう場合にある程度スクリプトの危険性を排除しつつ、比較的改変が少なくてすむ方法の案。

$invalid = array('cookie', 'location', 'window', 'script');
foreach ($invalid as $str) {
$body = preg_replace('/'.preg_quote($str).'/ie', '"&#".ord("$0").";".substr("$0", 1)', $body);
}

なんて感じにするとどうだろう? 要は危険そうな文字列は最初の一文字を実体参照に置き換えてしまうという方法。$invalidはもうちょいパターンを増やした方がいいだろうな。onという文字列も対象にしておくと、主立ったイベント処理がつぶせるかな。あとxmlhttprequestとかも危険。

そういやGoogleとかwebarchiveとかってどうしているんだろう? まあ自ドメインでスクリプトを実行されても大して危険がないサイトなら、対策を取る必要もないんだろうけど。

Published At2005-02-24 00:00Updated At2005-02-24 00:00