SQLインジェクションとは

SQLインジェクションとは、Webアプリケーションの脆弱性を悪用し、不正なSQLコマンドをデータベースに送信し、そのデータベースを不正に操作する攻撃のことです。
SQLインジェクションは、主にWebアプリケーションの入力フィールドを経由して攻撃をします。
例えば、検索フォームやログインフォーム、問い合わせフォームなど、ユーザーが情報を入力できる箇所が攻撃の入口となります。
攻撃者はこれらの入力フィールドに巧妙に細工されたSQLコードを送り込み、データベースに不正な操作を試みます。

SQLインジェクションで想定される被害

SQLインジェクションで想定される被害は、大きく分けて以下の3種類です。

【情報セキュリティ面での被害】

・顧客などの個人情報(氏名、住所、電話番号など)の流出
・クレジットカード情報など、機密情報の流出
・ユーザーアカウント情報(ID、パスワード)の窃取
・企業の機密データ(取引情報、製品情報)の流出

【システムへの影響】

・データベースの改ざんによるシステム障害
・重要データの削除によるサービス停止
・データベースの破壊
・重要データの暗号化

【企業への影響】

・情報流出に伴う損害賠償責任
・システム復旧で発生する莫大なコスト
・信用の失墜

SQLインジェクションへの対策

ここでは、SQLインジェクションへの対策を3つ紹介します。

WAFの導入

WAF(Web Application Firewall)とは、Webアプリケーションの脆弱性を狙ったサイバー攻撃を防御する装置です。WAF を導入することで、SQLインジェクションなどの既知の攻撃パターンを検知し、不正なアクセスを遮断することができます。
異常な通信パターンの検出も可能です。

2要素認証の実装

2要素認証とは、知識認証・所有認証・生体認証の3つの内、2つの要素を組み合わせてユーザーを認証することです。
2要素認証を実装すれば、仮にSQLインジェクションでデータベースに不正アクセスされても、追加の認証要素がないとシステムに侵入はされません。
これにより、SQLインジェクションの被害を最小限に抑えることができます。

ログの監視・管理

SQLインジェクションの対策を講じるうえで、具体的な監視項目として挙げられるのが、短時間での大量アクセス試行や業務時間外のデータベース操作、認証失敗の連続発生などのログです。
ログの管理では、ログファイルへのアクセス権限を最小限にして、定期的なバックアップを実施します。ログを定期的に監視することで不正アクセスを早期に発見することができます。