skillup

技術ブログ

サーバー・ネットワーク

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

投稿日:2017年2月6日 更新日:

これまた非常によく聞く攻撃方法ですね。

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

動的なページの表示生成の際に悪意のあるスクリプトを埋め込む行為。

具体的にはここが例え話もあって一番わかりやすいですな。

IPA 2. クロスサイト・スクリプティング

あるいは下記のソースの/xssのページ。

https://github.com/umanari145/secure

要約としてはiframeのsrcやinputのタグの中に<script>〜</script>や画面遷移系のHTML(たとえばform)を入れ、クッキーを盗み出し、SESSION_IDなどを抜き出したり、情報を書き換えたりします。下記の本に例が詳しいです。

安全なWebアプリケーションの作り方

被害

  • 本物サイト上にニセの情報がばらまかれる
  • ブラウザが保存しているCookieを取得され、なりすましにつながったり、個人情報の流出につながる
  • 任意のCookieをブラウザに保存させられる→セッションIDの固定化など
  • 特に入力を内容を確認させる表示画面(会員登録、アンケート、検索結果の表示、エラー表示などに紛れ込みやすい

対策

  • ウェブページに出力するすべての要素に対して、エスケープ処理を施す(いわゆるHTMLエスケープ)
  • 属性値は基本的にダブルクオートでくくる
  • URL出力の差異にはhttp://もしくはhttpsのもののみだけを対象とする(javascriptのものを防ぐ)
  • <script>~</script>の内容を動的に生成しない
  • 詳細なエラーメッセージを画面に表示しない
  • スタイルシートを任意のサイトから取り込めるようにしない
  • HTTPレスポンスヘッダのContent-Typeには文字コードを必ず指定する(指定しないと一部の文字コードがスクリプトになる)

その他

ちなみに現在のブラウザではXSSが自動的でエスケープされることがあり、「体系的に学ぶ〜」のサンプルなどは実行できないことが多いです。

その場合、MACであれば下記のような方法でXSSのフィルターを無効化しましょう。

MacOSのChromeで、XSS Auditorを無効にする方法(2016年3月以降)

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

監視検知処理に関して

実務で監視のスクリプトを書くことがあったんでメモしときます。 監視検知とは例えばあるディレクリに変化(ファイルの作成・更新・削除など)があった時に、それをトリガーにして何らかの処理を行うと言う仕組みに …

no image

Addtypeについて

htmlにはPHPを埋め込むことができますが、拡張子がhtmlの場合、そのままでは実行できません。 この場合、通常では拡張子を変えなければいけないところですが、apacheを使っている場合、設定ファイ …

no image

大規模Webサービス技術入門 DBの分散

前回に引き続き、大規模サービスを運用するときに必要になるMySQLの知識についてのまとめ Contents1 テーブル・SQL設計2 レプリケーション機能3 パーティショニング テーブル・SQL設計 …

no image

Terraform入門(シンプルなEC2の構築)

前回の記事でcloudformationとterraformの比較や紹介をしましたが、terraformがとっつきやすかったため、簡単なサンプルとメモを。 Contents1 インストール2 実行手順 …

no image

SSH鍵認証について+CakePHP2でのセッション切れ

鍵認証の設定をしたのでその際のメモなどを。 Contents1 SSH鍵認証2 CakePHP2セッション切れ SSH鍵認証 サーバーで公開鍵・秘密鍵を作成 サーバーで公開鍵を登録 クライアント側で秘 …

アーカイブ