「クロスサイトスクリプティング」の編集履歴(バックアップ)一覧に戻る

クロスサイトスクリプティング - (2015/06/06 (土) 21:33:02) のソース

今回はクロスサイトスクリプティングについて学んでいきます。クロスサイトスクリプティングは他人のWEBサイトに悪意のあるプログラムコードを埋め込む攻撃手法です。どんなことが起きる可能性があるのか、何を対策しなければならないのかを学んでいきたいと思います。
~
~
目次
#contents

----
~
*自分で自分を攻撃してみる。
**コード
&u(){form.php}
 <!DOCTYPE HTML>
 <html lang="ja">
 <head>
 <meta charset="utf-8">
 <title>フォーム</title>
 </head>
 <body>
 <form action="confirm.php" method="post">
 <dl>
 <dt>タイトル</dt>
 <dd><input type="text" name="title"></dd>
 <dt>内容</dt>
 <dd><textarea name="contents" cols="30" rows="4"></textarea></dd>
 <input type="submit" name="submit">
 </form>
 
 </body>
 </html>

&u(){confirm.php(脆弱性あり)}
 <!DOCTYPE HTML>
 <html lang="ja">
 <head>
 <meta charset="utf-8">
 <title>フォーム</title>
 </head>
 <body>
 <p>この内容でよろしいですか?</p>
 <?php
 echo $_POST["title"]."<br>";
 echo $_POST["contents"];
 ?>
 
 </body>
 </html>
#image(001.png)
**注入
タイトルのところでも、内容のところでもいいので、<script>alert("バカ”);</script>と入力します。JavaScriptプログラムを入れてみるのです。そして、送信ボタンを押すと、次のようになるはずです。
#image(002.png)

これを掲示板や皆が利用するところに入れられたら、そのサイトを見に来た人はこのようにでて非常に不愉快な思いをします。これはほんの序の口なのですが、第三者にJavaScriptを実行できる環境を与えてしまうと色々な問題が起こってしまいます。


*何が問題なのか?
(文章)
JavaScriptのプログラムコードを他人が記述でき、WEBサイトに埋め込まれ、第三者がそのWEBサイトにアクセスしてきた際に、第三者が被害を受けてしまうということが問題なのです。

*どんなことが起きるのか。
+別のサイトに転送させられる。
+セッションIDが盗み取られる。→その結果、ログインが必要なサイトに第三者がログインできてしまう可能性がある。
+ユーザIDとパスワードが第三者によって入手される可能性がある。

*何をすればよいのか。
(文章)
そのWEBサイトの開発者以外にはJavaScriptを埋め込まれても実行させてはいけないことをすればよいのです。JavaScriptは<script>alart("XXS");</script>と埋め込まれた時にアラートウインドウがでてきたらそれは脆弱性ありということです。対策をしていれば<script>alart("XSS")</script>という文字がでて、ウインドウは出てきません。

*対策方法
confirm.php
 <!DOCTYPE HTML>
 <html lang="ja">
 <head>
 <meta charset="utf-8">
 <title>フォーム</title>
 </head>
 <body>
 <?php
 echo htmlspecialchars($_POST["title"])."<br>";
 echo htmlspecialchars($_POST["contents"]);
 ?>
 
 </body>
 </html>
するとこのようになります。
#image(003.png)
&color(red){タグのみがでて、JavaScriptの実行を回避できた。ということです。}