TOPシステムトレンド> Webページに出力するすべての要素に対して、エスケープ処理を施す
安全なウェブサイト
安全なWebサイトの作成ガイド

第2回:OSコマンド・インジェクションとクロスサイト・スクリプティング
著者:独立行政法人 情報処理推進機構セキュリティセンター
2006/2/16
前のページ  1  2  3   4  次のページ
Webページに出力するすべての要素に対して、エスケープ処理を施す

   これは、スクリプト混入の原因を作らない実装です。Webページを構成する要素として、Webページの本文やHTMLタグの属性値などに相当するすべての出力要素にエスケープ処理を行います。

   エスケープ処理には、Webページの表示に影響する特別な記号文字(「<」、「>」、「&」など)を、HTMLエンティティ文字(「&lt;」、「&gt;」、「&amp;」など)に置換する方法があります。

   また、HTMLタグを出力する場合は、その属性値を必ず「"」(ダブルクォート)で括るようにします。そして、「"」で括られた属性値に含まれる「"」を、HTMLエンティティ文字「&quot;」にエスケープします。

   エスケープ処理は、外部からWebアプリケーションに渡される「入力値」以外に、データベースやファイルから読み込んだ値、HTTPヘッダ、Cookie、演算によって生成した値などが対象となる場合があります。「入力値」ではなく、「出力値」に注目してエスケープ処理を行うようにしてください。


URLを出力するときは、「http://」や「https://」ではじまるURLのみを許可するようにする

   これは、スクリプト混入の原因を作らない実装です。

   URLには、「http://」や「https://」からはじまるものだけでなく、「javascript:」の形式ではじまるものもあります。Webページに出力するリンク先や画像のURLが、外部からの入力に依存する形で動的に生成される場合、そのURLにスクリプトが含まれていると、クロスサイト・スクリプティング攻撃が可能となる場合があります。

   例えば、利用者から入力された"リンク先のURL"を<a href="リンク先のURL">の形式でWebページに出力するWebアプリケーションは、"リンク先のURL"に「javascript:」などからはじまる文字列を指定された場合に、スクリプトを埋め込まれてしまう可能性があります。リンク先のURLには「http://」や「https://」からはじまる文字列のみを許可する、「ホワイトリスト方式」で実装してください。


<script>・・・</script>要素の内容を動的に生成しないようにする

   これは、スクリプト混入の原因を作らない実装です。Webページに出力する<script>・・・</script>要素の内容が、外部からの入力に依存する形で動的に生成される場合、任意のスクリプトが埋め込まれてしまう可能性があります。危険なスクリプトだけを排除する方法も考えられますが、危険なスクリプトであることを確実に判断することは難しいため、<script>・・・</script>要素の内容を動的に生成する仕様は、避けることが望ましいです。


スタイルシートを外部サイトから取り込めるようにしない

   これは、スクリプト混入の原因を作らない実装です。スタイルシートには、expression()などを利用してスクリプトを記述することができるため、外部スタイルシートを取り込むことで、生成するWebページにスクリプトが埋め込まれてしまう可能性があります。取り込んだスタイルシートの内容をチェックし、危険なスクリプトを排除する方法も考えられますが、確実に排除することは難しいため、スタイルシートを外部から指定可能な仕様は、避けることが望ましいです。


保険的対策

   保険的対策には「入力値の内容チェックを行う」があります。

   これは、先ほど解説した根本的解決を実施できない場合や、実施に漏れなどがある場合にセーフティネットとなる対策です。入力チェック機能をWebアプリケーションに実装し、条件に合わない値を入力された場合は、処理を先に進めず、再入力を求めるようにします。ただし、チェックを通過した後の演算処理の結果がスクリプト文字列を形成してしまう場合などには対処できないため、この対策のみに頼ることはお勧めできません。

前のページ  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テキストの入力を許可する場合