• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

ITpro Security

セキュアなWeb構築の秘訣~クロスサイトスクリプティングは思わぬ個所に巣食っている~(第6回)

対策の基本はHTMLエンコード

佐名木智貴 2004/10/12 ITpro
日経ネットワークセキュリティ「自己防衛マニュアル」(2003年8月発行),156ページより

(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

対策の基本はHTMLエンコード

 対策の基本は,入力データに対してHTMLエンコード処理を実施することである。Webブラウザに送り出すHTML形式のデータの一部として使うすべての入力データをHTMLエンコードするのだ。これが,クロスサイト・スクリプティング問題に対する基本的な対策である。

 HTMLエンコードとは,「&」「<」「>」「”」の文字を,それぞれ「&」「<」「>」「"」に置換すること。HTMLタグの属性値は,通常「”」で囲むが,なかには「’」で囲んでいる場合もある。この場合は,上記四つの文字に加えて「’」を「'」に置換する。

 実は,対策はこれだけである。「&」「<」「>」「”」「’」はHTMLにおいてタグなどを表記する特別な文字であり,これらの置換処理を怠ると,悪意のスクリプトやHTMLタグを埋め込まれる危険性を抱えてしまう。セキュアなプログラミングとは,このように基本的なエスケープ処理を行うという対策がほとんどなのである。

対策漏れとなり得る個所

図4●ブラウザからの入力データを改ざんする基本的な方法
Webページをデスクトップに保存(左)。保存したファイル(abc.htm)をエディタで読み出し,書き換えたい項目を編集する(中)。書き換えたい個所以外にも,FORMタグのACTION属性を編集する(そうしないと対象ホストへはポストされない)。編集後,もう一度ブラウザに読み込ませて送信すれば改ざん完了(右)
写真5 ●Webブラウザのプロキシとして動き,HTTPリクエストやレスポンス・メッセージを改ざんするツール

 クロスサイト・スクリプティング問題において,注意すべきは対策漏れをなくすことだ。クロスサイト・スクリプティング問題は,Webアプリケーションのさまざまな個所に潜んでいる。このため,対策を忘れる個所が出る可能性がある。以下に,対策すべき個所の一覧を挙げておく。

●hiddenフィールド
●Cookie情報
●チェックボタン
●ラジオボタン
●リストボックス
●セレクト・ボックス
●年齢などの数値の入力を想定しているテキスト・ボックス
●メールアドレスの入力欄
●User-Agent

 hiddenフィールドやCookie情報は,データが不変だと考えがちである。しかし,この値を改ざんし,悪意あるHTMLタグを挿入することは容易にできる。

 チェックボタン/ラジオボタンやリストボックス/セレクト・ボックスは,ユーザーの指定できる値を制限しているように考えられるが,これらの項目についても悪意あるHTMLタグを挿入することは容易である。

 年齢などの数値が与えられると想定しているテキスト・ボックスや,メールアドレス用のテキスト・ボックスなどは,Webプログラマがそれら特定の書式のデータしか与えられないと早合点しがちだ。これらの項目についても,容易に悪意あるHTMLタグを挿入できる。

 User-Agentなどのブラウザが渡すデータなどにも,悪意あるHTMLタグを挿入することは容易である。

 入力データの改ざんは,図4[拡大表示]の流れで行えば可能だ。または写真5[拡大表示]のような,プロキシとして動きながら,HTTPリクエストおよびレスポンス・メッセージを書き換えるデバッグ用ツールも存在する。このようなツールを利用すれば,Cookie情報などのHTTPリクエスト・メッセージ全体を容易に書き換え可能だ。

 これらの入力個所から与えられたデータをHTML出力の一部として利用する場合は,HTMLエンコード処理を忘れないように心がけてほしい。

 また,データ出力個所にもHTMLエンコード処理を忘れがちな個所がある。ユーザーからの入力データを用いる場合には,出力個所でも必ずHTMLエンコード処理を忘れないようにしたい。対策漏れが起こりやすい出力個所には,以下のようなものがある。

●ヘッダタグで囲まれた領域
●テキストエリア・ボックス
●タグの属性(文字の色など)

佐名木 智貴 Sanaki Tomoki

筆者はインターナショナル・ネットワーク・セキュリティに勤務。技術本部に所属している。システムのセキュリティ・ホールの検査を専門とし,システム開発のセキュリティ問題に詳しい。



あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

クライアント/OA機器

ネットワーク/通信サービス

セキュリティ

もっと見る