SQL インジェクション攻撃 では、クライアント入力を使用してアプリケーションに SQL クエリを挿入または "挿入" します。 このタイプの攻撃が成功すれば、データベースから機密情報を読み取り、変更または削除することができます。 最も極端な場合には、システムコマンドを発行することができます。
SQL インジェクション攻撃の実行に使用できる危険なコードを次に示します。
ユーザーから * 名前 = ユーザー名を選択します。
変数 "userName" はユーザーから取得されます。 攻撃者がユーザー名として 'OR' 1 '='1' を 指定した場合、 式 '1' = '1' が常に true であるため、正しいユーザー名が強制的に選択されます。
sqlmap と呼ばれるツールを使用して、SQLインジェクションの脆弱性をテストし、SQL クエリを自動的に検索して使用できます。 このツールは、ロジック ベース、ブラインド、エラー ベース、UNIONクエリ、累積クエリ、および OOB 攻撃という 6 つのSQL インジェクション手法をサポートします 。 MySQL、オラクル、ポストグレSQL、マイクロソフトSQLサーバー、アクセス、IBM DB2、SQLite、ファイアバード、シベース、SAP MaxDB、HSQLDB、およびインフォーミックスデータベースを攻撃することができます。
次の図は、ヒューリスティック テストを使用して、テスト中のクエリで id パラメーターが SQL インジェクション攻撃に対して脆弱である可能性があることを検出したsqlmapの使用例を示しています。