★阿修羅♪ 現在地 HOME > 掲示板 > IT6 > 562.html
 ★阿修羅♪
次へ 前へ
セキュアなWeb構築の秘訣〜クロスサイトスクリプティングは思わぬ個所に巣食っている(6)
http://www.asyura2.com/0406/it06/msg/562.html
投稿者 クエスチョン 日時 2004 年 10 月 12 日 19:18:42:WmYnAkBebEg4M
 

(回答先: セキュアなWeb構築の秘訣〜クロスサイトスクリプティングは思わぬ個所に巣食っている(5)〜 投稿者 クエスチョン 日時 2004 年 10 月 12 日 19:11:02)

セキュアなWeb構築の秘訣〜クロスサイトスクリプティングは思わぬ個所に巣食っている(6)
http://itpro.nikkeibp.co.jp/members/NBY/Security/20040809/148388/

[2004/10/12] バックナンバー

対策の基本はHTMLエンコード
佐名木 智貴
日経ネットワークセキュリティ「自己防衛マニュアル」(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

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

 次へ  前へ

IT6掲示板へ



フォローアップ:


 

 

 

  拍手はせず、拍手一覧を見る


★登録無しでコメント可能。今すぐ反映 通常 |動画・ツイッター等 |htmltag可(熟練者向)
タグCheck |タグに'だけを使っている場合のcheck |checkしない)(各説明

←ペンネーム新規登録ならチェック)
↓ペンネーム(2023/11/26から必須)

↓パスワード(ペンネームに必須)

(ペンネームとパスワードは初回使用で記録、次回以降にチェック。パスワードはメモすべし。)
↓画像認証
( 上画像文字を入力)
ルール確認&失敗対策
画像の URL (任意):
投稿コメント全ログ  コメント即時配信  スレ建て依頼  削除コメント確認方法
★阿修羅♪ http://www.asyura2.com/  since 1995
 題名には必ず「阿修羅さんへ」と記述してください。
掲示板,MLを含むこのサイトすべての
一切の引用、転載、リンクを許可いたします。確認メールは不要です。
引用元リンクを表示してください。