TOPシステムトレンド> HTMLテキストの入力を許可する場合
安全なウェブサイト
安全なWebサイトの作成ガイド

第2回:OSコマンド・インジェクションとクロスサイト・スクリプティング
著者:独立行政法人 情報処理推進機構セキュリティセンター
2006/2/16
前のページ  1  2  3  4
HTMLテキストの入力を許可する場合

   次に「HTMLテキストの入力を許可する場合」について解説します。
根本的解決

   根本的解決には「入力されたHTMLテキストから構文解析木を作成し、スクリプトを含まない必要な要素のみを抽出する」があります。

   これは、スクリプト混入の原因を作らない実装です。入力されたHTMLテキストに対して構文解析を行い、「ホワイトリスト方式」で許可する要素のみを抽出します。ただし、これには複雑なコーディングが要求され、処理に負荷がかかるといった影響もあるため、実装には十分な検討が必要です。


保険的対策

   保険的対策には「入力されたHTMLテキストから、スクリプトに該当する文字列を排除する」があります。

   これは、根本的解決を実施できない場合にセーフティネットとなる対策です。入力されたHTMLテキストに含まれる、スクリプトに該当する文字列を抽出し、排除してください。抽出した文字列の排除方法には、無害な文字へ置換することをお勧めします。

   例えば、「<script>」や「javascript:」を無害な文字列へ置換する場合、「<xscript>」「xjavascript:」のように、その文字列に適当な文字を付加します。

   他の排除方法として、文字列の削除があげられますが、削除した結果が危険な文字列を形成してしまう可能性があるため、お勧めできません。なお、この対策は、危険な文字列を完全に抽出することが難しいという問題があります。

   Webブラウザによっては、「java&#09;script:」や「java(改行コード)script:」のような文字列を「javascript:」と解釈してしまうため、単純なパターンマッチングでは危険な文字列を抽出することができません。このような「ブラックリスト方式」による対策のみに頼ることはお勧めできません。

   以上の内容を実装することにより、クロスサイト・スクリプティングに対する安全性の向上が期待できます。クロスサイト・スクリプティングに関する情報については、次の資料もご参照ください。

参考URL
セキュアWeb プログラミング「クロスサイト・スクリプティング」
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_02.html
Web サイトにおけるクロスサイトスクリプティング脆弱性に関する情報
http://www.ipa.go.jp/security/ciadr/20011023css.html


次回は

   セッション・ハイジャック、パス名パラメータを悪用したファイル参照、メールの第三者中継について紹介します。

前のページ  1  2  3  4

安全なウェブサイトの作り方 - ウェブアプリケーションのセキュリティ実装とウェブサイトの安全性向上のための取り組み

2006年1月31日にIPAは、ウェブサイト運営者がウェブサイト上で発生しうる問題に対して、適切な対策ができるようにするため、「安全なウェブサイトの作り方」を取りまとめ公開いたしました。

本記事は、その報告書の転載です。詳しい内容に関しましては、以下のURLをご参照ください。

安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/documents/2005/website_security.pdf

脆弱性関連情報に関する届出について
http://www.ipa.go.jp/security/vuln/report/index.html

IPA(独立行政法人情報処理推進機構)
http://www.ipa.go.jp/index.html

IPA/ISEC(独立行政法人情報処理推進機構セキュリティセンター)
http://www.ipa.go.jp/security/index.html

独立行政法人情報処理推進機構セキュリティセンター
著者プロフィール
独立行政法人 情報処理推進機構セキュリティセンター
情報処理推進機構セキュリティセンター(IPA/ISEC)は、わが国において情報セキュリティ対策の必要性・重要性についての認識を啓発・向上し、具体的な対策実践情報・対策手段を提供するとともに、セキュアな情報インフラストラクチャ整備に貢献することをミッションとしています。


INDEX
第2回:OSコマンド・インジェクションとクロスサイト・スクリプティング
  OSコマンド・インジェクション
  クロスサイト・スクリプティング
  Webページに出力するすべての要素に対して、エスケープ処理を施す
HTMLテキストの入力を許可する場合