Webアプリケーションに対する攻撃で、狙われやすい箇所の一つが、ユーザーが文字列などを入力したときの処理にかかわる部分です。今回は、この入出力時の文字列処理を狙った攻撃と対策について説明します。

 入力チェックや出力時の処理に不備があると、開発者が意図しない不正なコマンドが入力、実行されてしまいます。こうした文字列処理に起因した脆弱性には、「クロスサイトスクリプティング」「SQLインジェクション」「OSコマンドインジェクション」「ヘッダインジェクション」などがあります。特に注意すべきものとして、今回はクロスサイトスクリプティングとSQLインジェクションについて解説します。

 Webアプリケーションにおける入力チェックでは、すべてのパラメーターを信用せず、漏れなく確認します。そして出力時には、出力先に応じてエスケープ処理を施す必要があります。エスケープ処理とは、言語や実行環境によって特別な意味を持つ文字や記号を、別の文字や記号に変換して、特別な意味を打ち消す処理のことです。

 入力チェックや出力時のエスケープ処理は、開発時に実施すべきセキュリティ対策です。そのため、開発者のセキュリティに関する知識レベルや、品質に対する意識の差によって、脆弱性が生まれやすい傾向があります。スケジュールや納期が迫っている中で、対策が後回しになったり、漏れが生じたりする可能性があるので注意しましょう。

不正スクリプトを混入させるクロスサイトスクリプティング

 クロスサイトスクリプティング(Cross Site Scripting、以降XSS)は、ユーザーのブラウザー上で動作する不正なスクリプト(JavaScript)を混入する攻撃手法または脆弱性です。

 XSS脆弱性があると、CookieのセッションIDを盗み出してセッションを乗っ取られたり(セッションハイジャック)、Webサイトに偽の入力フォームが構築されてフィッシング詐欺の被害にあうといった可能性があります。