超現場ブログ

Technique,Design and Events

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

Twitter Facebook Google+ はてブ

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

WEB塾超現場主義 名古屋栄校です。

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

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

 

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

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

img_1001-1

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

<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=""&gt;&lt;script type="text/javascript"&gt;攻撃スクリプト&lt;/script&gt;<"">

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

 

【結論】

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

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

ご質問・ご相談の方はこちら

ご質問・ご相談ですか?

どんなことでもお気軽にご相談ください。

ご質問・ご相談はこちら

Copyright © 超現場主義 All rights reserved.