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

ansible複数アイテム登録&ファイル分割&ログ

引き続きansibleに関して。 Contents1 設定ファイルの書き換え1.1 ini_file1.2 lineinfile2 複数の値の置換3 ファイル分割3.1 ログ修正 設定ファイルの書き換 …

no image

AWSのCLIに関して

実務でAWSを使ってたんですがテスト時にはコマンドを使っている方がはるかに早いためコマンドライン環境を作っておいたほうが良いです。 ちなみに使用する前にはAWSのコンソールからIAMユーザーを作成する …

no image

dockerでの環境構築 〜コンテナ作成し、実作業ができるまで(mac編)

今や環境構築の保存や移行などが比較的自由にできるようにはなってきていると思います。 自分の場合は未だにvagrantのイメージフォルダを移行してやっていますが(汗)。 参考リンク vagrantで仮想 …

no image

nginxによる一般的なwebサーバーの構築

今回は一般的なwebサーバーでよく利用するnginxの基本機能を紹介します。 サーバー・インフラ徹底攻略の3章になります。 Contents1 バーチャルホストを利用する1.1 IPアドレスベースのバ …

no image

herokuでのhttpd.conf設定

前回の記事でLet’s EncryptでSSL設定する場合、 http://ドメイン/.well-known/ というURLにアクセスする必要があります。 ただherok …