レイクのサイトです。
種類 産業 大安 彩り 聞い 休み 予定 大根卸 約束 書類 削減 会員 飲み物 カジュアル 会館 状況 なんて 開催 行方 次第 南口 宇崎 申込 皆さん 南都留 以降 ゆっくりと 大手 堪能 つかむ

まだまだとは?/ レイク

[ 140] まだまだあるクロスサイト・スクリプティング攻撃法:ITpro
[引用サイト]  http://itpro.nikkeibp.co.jp/article/COLUMN/20070415/268323/

前回はクロスサイト・スクリプティングのぜい弱性を突く攻撃の対策としてのHTMLエンコードの有効性を述べた。ただ,HTMLエンコードだけではクロスサイト・スクリプティング攻撃を完全に防御することはできない。そこで今回は,HTMLエンコードで対処できないタイプのクロスサイト・スクリプティング攻撃の手口と,その対策について解説する。
以下では,HTMLタグやCSSの入力を許容している場合と,文字コードを明示していない場合の二つのトピックを紹介する。
これらに該当する場合,IPAが発行している「安全なウェブサイトの作り方 改定第2版」などを参照して,十分な対策をとられたい。
6) 入力されたHTML テキストから構文解析を作成し,スクリプトを含まない必要な要素のみを抽出する
解説 これはスクリプト埋め込みの原因を作らない実装です。入力されたHTML テキストに対して構文解析を行い,「ホワイトリスト方式」で許可する要素のみを抽出します。ただし,これには複雑なコーディングが要求され,処理に負荷がかかるといった影響もあるため,実装には十分な検討が必要です。
行き届いた解説でまったく正しいのだが,問題は上記にある「ホワイトリスト方式」の実装が複雑になる点である。HTMLテキストやCSSの構文を解析する必要があり,そのプログラミングは一般のアプリケーション・プログラマには不慣れで荷が重い。このため現実のWebサイトでは,「危険な文字列」をパターン・マッチングにより抽出して削除する,あるいは害のない文字列に置換するような対策が行われている場合が多い。もちろん,対策が不十分であれば効果は薄い。事例を見てみよう。
CSSはHTMLの見栄えを規定するひな形で,文書の構造と見栄えを分離することを目的として開発された。ブログなどでは,このCSSをブログ・オーナーが指定できる場合が多い。文書の内容だけでなく,見栄えについても細かく指定することにより,ブログ・オーナーの「独自のこだわり」を表現できるようになっている。
CSSのサンプルを図2に,その表示例を図3に示す。この例では,subject(タイトル),main(本文)という2種類のクラスを定義し,色をそれぞれ赤と青に指定している。こうしておけば,文書構造上,タイトルや本文の色,フォントなどを簡単に変更できる。ブログなどではタイトルと本文の組が一つの画面にいくつも表示されるので,簡便にスタイルを指定できるようになる。
このような問題に対して,望ましい対処,すなわち「ホワイトリスト方式」の対応はこうだ。まず,入力されたCSSを構文解析して文書の構造を把握する。そして,JavaScriptなど以外の「安全な」要素のみで構成されているかどうかをチェックする。安全でない場合はエラーとする。
しかし前述のように,CSSの構文解析は複雑な処理が要求されるため,現実のブログ・サイトなどでは以下のような「ブラックリスト方式」での対策が行われる。ブラックリスト方式では,前述のexpressionのような「危険な」文字列に注目し,そのような文字列があった場合に以下のような対応をとる。
著名なブログ・サイトであるはてなダイアリーではクロスサイト・スクリプティング対策の実装ポリシーを公開しているが,これによると上記のB方式を採用している。ブラックリスト方式による実装例として貴重な資料であるので興味のある方は参照されたい。
このように,ブラックリスト方式によるクロスサイト・スクリプティング対策はかなり厄介であり,かつ現在知られていない方法により対策が破られる可能性も否定できない。どうしても実装しなければならない場合は,極力安全サイドでの実装をお勧めする。一例として,CSSそのものを入力させるのではなく,色やフォント,サイズなどを画面から選択させるようにするなど,自由度を下げてしまうのも安全性を高めるためには有効である。
この場合の表示結果は図10のようになる。すなわち,UTF-7エンコーディングとしてではなく,通常のアスキー文字列として表示され,JavaScriptが起動されることもない。クロスサイト・スクリプティング対策のためだけではないが,Webアプリケーション開発の基本として,文字エンコーディングは忘れずに指定しておきたい。
製品&サービス・ディレクトリ業務アプリケーション設計開発OS/DB/ミドルウエアサーバー/ストレージ
|著作権・リンクについて|個人情報保護方針/ネットにおける情報収集/個人情報の共同利用について|サイトマップ|

 

戻る

レイクのサイトです。

レイクのサイトです。