Webアプリケーションの攻撃と対策
Webアプリケーションに対する攻撃の多くは、利用者が入力した値や送信された情報を悪用する手口である。攻撃の種類ごとに悪用される場所と、対策を置くべき位置が異なるため、攻撃手法と対策を対応づけて理解することが要点になる。ここでは主要な攻撃を取り上げ、その仕組みと対策を整理する。
クロスサイトスクリプティングの仕組み
クロスサイトスクリプティング(XSS)は、フォームなどの入力欄に悪意あるJavaScriptを含むデータを入力し、そのデータが画面に出力されたときに閲覧者のブラウザでスクリプトを実行させる攻撃である。 攻撃者がサーバへ侵入することを主な目的とせず、閲覧者のブラウザ上で動くスクリプトを狙う点が特徴である。バッファの上限を超えるデータで起きるバッファオーバーフローや、URLを推測して制限されたページへ直接アクセスする手口は、XSSとは性質が異なる。
出力時のエスケープという対策
XSSの対策は、出力するデータがHTMLのタグやスクリプトとして解釈されないようにすることである。 HTML本文に出力する場合は「<」を「<」に変換するなど、出力先の文脈に応じたエスケープを行う。これにより、入力に含まれるスクリプトが実行されることを防げる。
一方、入力データのサイズを制限する対策は、過大な入力による負荷を抑える効果はあるが、スクリプトとして解釈される問題そのものは取り除けない。SNMPエージェントを常時稼働させることや、OSへのセキュリティパッチを適用することも、この種の攻撃を直接防ぐ対策ではない。
OSコマンドインジェクションとHTTPヘッダインジェクション
OSコマンドインジェクションは、Webページで入力した文字列がPerlのsystem関数やPHPのexec関数などに渡され、シェルを通じて不正なコマンドやシェルスクリプトを実行させる攻撃である。 同じ仕組みを扱う問題は、別の年度でも繰り返し出題されている。 HTTPヘッダインジェクションは、入力に改行などを混入させてHTTPレスポンスヘッダを不正に操作する攻撃であり、コマンドを実行させる攻撃とは区別する。
この節の続き
- SQLインジェクションと対策
- セッション乗っ取りへの対策
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む