Akros Web & Business Design Academy 名古屋栄校です。
今回は、XSS(Cross Site Scripting)、クロスサイトスクリプティングについてお話したいと思います。
頭文字をそのまま取ると、CSSとなってしまい、(Cascading Style Sheets)と一緒になってしまうので間違えないで下さいね。
WEBアプリケーションを勉強された方は、耳にしたことあるかもしれませんが、攻撃者が悪意あるスクリプトを実行させて、フィッシングサイトへ誘導したり、不正ファイルをダウンロードさせたりすることで、個人情報を盗み出したり、不正プログラムを実行することを目的として、WEBサイトを攻撃する手法のことを指します。
【XSS(クロスサイトスクリプティング)の仕組み】
一般的には、入力フォーム(テキストボックス)にスクリプトタグを埋め込んだ内容を記述して、不正にスクリプトを実行させようと試みます。もっとも簡単な例で説明します。
このように入力して確認画面に遷移したとします。
そうすると、確認画面では、
<input type="hidden" name="name" value=""><script type="text/javascript">攻撃スクリプト</script><"">
と展開され、攻撃スクリプトが実行されてしまいます。
【XSS(クロスサイトスクリプティング)への対策】
最も簡単で確実な対策が、htmlspecialchars を使って特殊記号を使ってエスケープ(特殊な意味を持つ記号の意味を回避する)処理を施します。
<input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST[name],ENT_QUOTES); ?>">
または、
$name = htmlspecialchars($_POST[name],ENT_QUOTES); <input type="hidden" name="name" value="<?php echo $name; ?>">
のように記述します。すると、
<input type="hidden" name="name" value=""><script type="text/javascript">攻撃スクリプト</script><"">
のように展開されるため、scriptタグとして認識されず、不正なプログラムが実行されることはありません。
ただし、100%完璧な対処方法は存在しません。
少しでも安全なコーディングを心がけましょう!!
【結論】
入力フォームからデータを受け取るプログラムには、htmlspecialchars を使いましょう!!
WEBサイトのコーディング、WEBプログラミングに興味のある方は、
Webデザイナー PRO
こちらのコースがオススメです。