SQL INJECTION · チェックツールの選び方
SQLインジェクションのチェックツール
無料でできる範囲と、その限界
「SQLインジェクションをチェックできるツールはないか」と探している方に向けて、 ツールの種類・無料で確認できる範囲・自動判定が当てにならない場面を整理しました。 結論から言うと、URLを入れるだけの無料ツールでSQLインジェクションの有無を 正確に判定することはできません。その理由と、代わりに何ができるかを説明します。
このページは自社サイトを守る立場の方に向けた内容です。攻撃の手順は扱いません。 他人のサイトへ許可なく検査を行う行為は、不正アクセス禁止法に抵触するおそれがあります。
チェックツールの3つの種類
「SQLインジェクションのチェックツール」と呼ばれるものは、大きく3種類に分かれます。 探しているものがどれなのかで、選ぶべき手段が変わります。
| 種類 | やること | 向き・不向き |
|---|---|---|
| 動的診断 (DAST) |
公開中のサイトに実際のリクエストを送り、応答の変化から脆弱性を推測する。OWASP ZAP など。 | 手軽だが誤検知・見逃しが多い。本番環境へ負荷や副作用を与える可能性があり、無断実行は不可。 |
| 静的解析 (SAST) |
ソースコードを読み、危険なSQLの組み立て方をしている箇所を指摘する。 | 網羅性が高く最も費用対効果が良い。ソースコードが必要なので、外注サイトでは開発会社の協力が要る。 |
| 手動診断 | 人が画面を操作し、業務フローの条件分岐まで含めて検証する。 | 自動では届かない領域を確認できる。費用は最も高いが、会員・決済・予約がある場合は実質必須。 |
なぜ無料の自動ツールでは判定できないのか
1. 「検出なし」が安全の証明にならない
自動ツールは、入力欄に既知の攻撃パターンを送り、応答の変化から推測します。 しかし実際に危険なSQLインジェクションは、複数の画面をまたぐ処理や、特定の会員ステータスのときだけ 通る条件分岐の中に潜んでいることが多く、単純なパターン送信では再現されません。 「問題なし」という結果が、かえって対応を遅らせてしまうことすらあります。
2. 誤検知と本番への副作用
エラー画面の文言が変わっただけで「脆弱性あり」と判定されることも、 逆に丁寧なエラーハンドリングによって兆候が隠れることもあります。 さらに、攻撃パターンを本番のデータベースへ大量に送ること自体が、 意図しないデータ登録・削除や、サーバー負荷を引き起こすリスクを伴います。
3. 許可のない検査は法に触れる
SQLインジェクションの検査は、対象サイトへ実際に攻撃と同じリクエストを送る行為です。 自分に管理権限のないサイトに対して行えば、不正アクセス禁止法の問題になります。 無料ツールが「URLを入れるだけ」でSQLインジェクションまで診断すると謳っている場合、 この点をどう扱っているかは確認したほうがよい箇所です。
セキュリティブースターの無料診断がSQLインジェクションを対象外にしている理由
上記の3点があるためです。当社の無料診断は、誰でも安全に実行できる範囲 (設定・ヘッダ・公開ファイル・既知の脆弱性など)に限定しています。 「対象外」と明記しているのは、手を抜いているからではなく、 無料の自動診断で断定できない項目を「問題なし」と表示しないためです。
自社サイトで今すぐ確認できること
攻撃パターンを送らなくても、確認できることは多くあります。 開発を外注している場合は、そのまま開発会社への確認事項として使えます。
- SQLを文字列連結で組み立てていないか 最も重要な確認点です。入力値を "SELECT ... WHERE id = " . $id のように 連結しているなら危険です。プレースホルダ(プリペアドステートメント)を 使っているかを確認してください。
- フレームワークの機能を経由しているか Laravel の Eloquent/クエリビルダ、Rails の ActiveRecord などを通していれば、 標準的な使い方をしている限り自動的に対策されます。生SQLを書いている箇所だけを洗い出せば、 確認範囲を大幅に絞れます。
- エラーの詳細が画面に出ていないか SQLのエラーメッセージがそのまま表示されると、攻撃の足がかりになります。 本番環境でデバッグ表示が有効になっていないかを確認してください。 この項目は当社の無料診断で自動チェックできます。
- データベースの権限が広すぎないか Webアプリから接続するアカウントに、必要以上の権限(テーブル削除やファイル読み書き)が 付いていないかを確認します。万一侵入されたときの被害範囲が変わります。
- WAF を導入しているか 根本対策ではありませんが、既知の攻撃パターンを止める層として有効です。 WAF の有無も当社の無料診断で確認できます。
無料診断でカバーできる範囲
SQLインジェクションそのものは対象外ですが、上のチェックリストのうち エラー詳細の露出・WAFの有無・データベース管理画面の公開状態・不要ファイルの露出など、 攻撃の足がかりになる部分は自動で確認できます。所要時間は1分ほど、登録は不要です。
URLを入力するだけで、設定ミス・公開ファイル・既知の脆弱性を自動チェックします。 SQLインジェクションまで確認したい場合は、手動診断でお見積りします。
無料で診断する → 手動診断を相談する →