ロコリンの雑記

アニメ大好きニートのロコリンのブログ。2015年卒(修士)の社会人。学生時代(2010年)から続けてるブログなのでエントリによっては学生ブログと社会人ブログになっています。時系列から察して。
 
 
このブログについて
ブログ内検索
カテゴリ
プロフィール

ロコリン

Author:ロコリン
2018年5月だけニート(6月から会社員)。2015年3月まで大学院生でした。
趣味:アニメ/Twitter/ゲーム/ニコ動
今(2015年2月更新):プリキュア/プリパラ/アイカツ/ごちうさ/艦これ

外部リンク
Twitter

スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

クロスサイトスクリプティング (XSS) - 情報セキュリティ 

クロスサイトスクリプティング

クロスサイトスクリプティング (Cross Site Scripting, XSS) は Web アプリケーションの脆弱性を突いた攻撃の1つです。 CGI などで動的に Web ページを生成する Web サイトに欠陥があるとこの攻撃を行われる可能性があります。攻撃者のサイトにアクセスすると攻撃対象の Web ページで悪意のスクリプトが実行されるという、サイトをまたがった攻撃であることからこの名前が付けられています。
利用者の私たちがこの攻撃を受けると脆弱サイト上の Cookie の情報が盗まれるなどして、個人情報が盗まれたりセッションハイジャックされたりする可能性があります。

狙われる脆弱性

例えば、会員登録や掲示板への書き込みなどでユーザに入力させた情報を受け取り、それを確認画面などで表示するような Web サイトがあったとします。この画面は Web ブラウザ上で解釈される HTML などで記述されている場合が多いです。入力された文字列を何も処理しないで直接表示する場合、メタキャラクタと呼ばれる特別な意味を持つ文字が含まれていてもそのまま出力され、 Web ブラウザ上で HTML として解釈されます。

例えば、次のような名前と文章を受け取るサイトがあったとします。
お名前:
コメント:
通常の入力例を示します。
お名前:
コメント:
この状態で送信ボタンを押すと次のような確認画面を表示するとします。
次の内容で送信しますか?
お名前: 太郎
コメント: コーヒー吹いたwwwww
しかし、悪意のある人は次のような内容を書き込むかもしれません。
お名前:
コメント:
適切にエスケープ処理された Web アプリでは次のような HTML を出力します。これはユーザが入力した HTML を無効にしたものです。
(前略)
 <td>コメント:</td>
 <td>&lt;script type=&quot;text/javascript&quot;&gt;alert(&quot;hoge&quot;);&lt;/script&gt;</td>
(後略)
この結果次のように安全に確認画面が表示されます。
次の内容で送信しますか?
お名前: カイザー
コメント: <script type="text/javascript">alert("hoge");</script>
しかし、この処理を怠った Web アプリでは次のような HTML を出力します。
(前略)
 <td>コメント:</td>
 <td><script type="text/javascript">alert("hoge");</script></td>
(後略)
この例では、 JavaScript の alert 関数が呼び出され、「hoge」と書かれたウインドウが Web ブラウザ上で表示されます。この例は実害のないイタズラ程度のもので、これ自体がクロスサイトスクリプティングではありません。この欠陥を悪用してクロスサイトスクリプティングが行われます。

攻撃手法

上記の欠陥を持った Web サイトは次のようにして攻撃者に狙われ、利用者が被害を受ける可能性があります。

ここで、脆弱性のある Web サイトをサイト A 、攻撃者が作った Web サイトをサイト Z 、利用者を U さんとします。
  1. 利用者 (U さん) は何らかの手口で攻撃者が用意した Web サイト (サイト Z) にアクセスします。手口としては、例えばメールや掲示板などに書かれた URL に不用意にアクセスするなど。ネット徘徊で偶然たどり着く場合もあります。
  2. サイト Z は HTML を出力します。
  3. U さんはサイト Z から脆弱性のあるサイト (サイト A) の Web アプリケーションへ移動させられます。例えば、サイト Z 上にあるリンクをクリックしたり、隠しフォームから自動送信されるなど。この送信データには悪意のスクリプトが含まれています。この時点ではまだ悪意のスクリプトは実行されません。
  4. サイト A の Web アプリケーションで動的に Web ページが生成されます。このとき、先ほど仕込まれた悪意のあるスクリプトが Web ブラウザ上で実行されます。
  5. 悪意のスクリプトはサイト A が出力するので、 U さんのブラウザに保存されたサイト A の Cookie の情報を扱うことができます。この情報をサイト Z に送信します。
XSS フロー図

対策

ユーザ側では次のような対策をとるべきです。
  • 不審な Web サイトにはアクセスしない。
  • インターネットは注意して利用する。
  • Cookie をなるべく削除する。 (利便性との兼ね合いが必要)
一番確実な方法は、インターネットを利用しないことです。でも、それって不便ですよね。機密性と可用性は相反するものでありながら、どちらも大切なのです。

Web アプリケーション側では、次のような対策をとるべきです。
  • 入力データにメタキャラクタなどが含まれていないかチェックし、エスケープ処理などをして不正なスクリプトの実行を確実に防ぐ。
  • Web アプリケーションファイアウォール (WAF) を導入し、攻撃を遮断する。
スポンサーサイト
コメント
クロスサイトスクリプティングは初めて聞きました。
私もまだまだ勉強不足です。
最近JavaScriptを書いていたんですが、HTMLを動的に書きかえる処理を書くと入力にJavaScriptのコード仕込ませたらまずいなぁと思っていました。
脆弱性を完全になくすのはなかなか難しいです。
> おたっくすさん

コメントありがとうございます。

情報処理技術者試験は基礎知識を習得させることが目的らしいので、まだ方向性を確立していない私にとっては羅針盤みたいな感じになってきました。
でも、いずれは私も自分で技術や知識を探せるようにならないといけませんね。

脆弱性を完全に防ぐのは確かに難しそうですね。
ユーザに入力をさせるプログラムや、ファイルを読み込むプログラムなどでは特に注意しないといけないそうです。














 管理者にだけ表示を許可する

トラックバック
 
http://rexpit.blog29.fc2.com/tb.php/48-84e4aec6
最新記事
最新コメント
FC2カウンタ
欲しい
最近買ったもの
Amazon 検索
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。