XSS(クロスサイトスクリプティング)について

Akros Web & Business Design Academy 名古屋栄校です。

今回は、XSS(Cross Site Scripting)、クロスサイトスクリプティングについてお話したいと思います。
頭文字をそのまま取ると、CSSとなってしまい、(Cascading Style Sheets)と一緒になってしまうので間違えないで下さいね。

WEBアプリケーションを勉強された方は、耳にしたことあるかもしれませんが、攻撃者が悪意あるスクリプトを実行させて、フィッシングサイトへ誘導したり、不正ファイルをダウンロードさせたりすることで、個人情報を盗み出したり、不正プログラムを実行することを目的として、WEBサイトを攻撃する手法のことを指します。

 

【XSS(クロスサイトスクリプティング)の仕組み】

一般的には、入力フォーム(テキストボックス)にスクリプトタグを埋め込んだ内容を記述して、不正にスクリプトを実行させようと試みます。もっとも簡単な例で説明します。

img_1001-1

このように入力して確認画面に遷移したとします。
そうすると、確認画面では、

[html] <input type=”hidden” name=”name” value=””><script type=”text/javascript”>攻撃スクリプト</script><“”>
[/html]

と展開され、攻撃スクリプトが実行されてしまいます。

 

【XSS(クロスサイトスクリプティング)への対策】

最も簡単で確実な対策が、htmlspecialchars を使って特殊記号を使ってエスケープ(特殊な意味を持つ記号の意味を回避する)処理を施します。

[html] <input type=”hidden” name=”name” value=”<?php echo htmlspecialchars($_POST[name],ENT_QUOTES); ?>”>
[/html]

または、

[html] $name = htmlspecialchars($_POST[name],ENT_QUOTES);
<input type=”hidden” name=”name” value=”<?php echo $name; ?>”>
[/html]

のように記述します。すると、

[html] <input type=”hidden” name=”name” value=””&gt;&lt;script type=”text/javascript”&gt;攻撃スクリプト&lt;/script&gt;<“”>
[/html]

のように展開されるため、scriptタグとして認識されず、不正なプログラムが実行されることはありません。
ただし、100%完璧な対処方法は存在しません。
少しでも安全なコーディングを心がけましょう!!

 

【結論】

入力フォームからデータを受け取るプログラムには、htmlspecialchars を使いましょう!!

WEBサイトのコーディング、WEBプログラミングに興味のある方は、
Webデザイナー PRO
こちらのコースがオススメです。