カテゴリー:
セキュリティ
閲覧数:835 配信日:2014-05-21 23:05
URL属性とは?
・aタグのhref属性やimgタグのsrc属性など、URL指定するタグ属性のこと
<a href="★★">テスト</a>
・URL属性部分に入力データを埋め込む場合、単純な置換処理では対応不可
・エスケープ処理をしてもスクリプトを埋め込まれ実行される可能性がある
htmlspecialchars()関数でエスケープ処理しても、Javascriptが実行されてしまう例
<?php
$input = 'javascript:alert(\'clicked!\');' // ユーザからの入力値(本来は$_POSTなどで受ける)
?>
<a href="<?php echo htmlentities($input,ENT_QUOTES); ?>">click</a><br>
<a href="<?php echo htmlspecialchars($input,ENT_QUOTES,'UTF-8'); ?>">click</a>
対策
・許可するスキームを(https, http, mailto)などを定義し、それと一致するかどうかでチェック実施
・最も良い対策は、URL属性にあたるところを、ユーザーからの入力に依存するような作りにしないこと