SQL インジェクションとは
この記事は約 2 分で読めます
SQL インジェクション (SQL Injection) とは、Web アプリケーションの入力フォームなどに 不正な SQL 文を挿入し、データベースを不正に操作する攻撃手法です。 認証の回避、データの窃取・改ざん・削除、さらにはサーバーの制御権奪取にまで 至る可能性がある、極めて危険な脆弱性です。
攻撃の仕組み
ユーザー入力をそのまま SQL 文に組み込むプログラムが攻撃対象となります。 たとえば、ログインフォームに「' OR 1=1 --」と入力することで認証を回避したり、 UNION 句を使って他のテーブルのデータを取得したりできます。 ブラインド SQL インジェクションでは、エラーメッセージが表示されなくても 真偽値の違いからデータを推測できます。SQL インジェクション対策の書籍 (Amazon)で詳しく学べます。
ユーザーとしての備え
SQL インジェクションはサーバー側の脆弱性ですが、ユーザーとしても備えが必要です。 パスつく.com で生成したユニークなパスワードをサービスごとに設定しておけば、 1 つのサービスでデータ漏洩が発生しても他のアカウントは安全です。 利用するサービスがデータ漏洩を公表した場合は、速やかにパスワードを変更しましょう。データ保護の書籍 (Amazon)も参考になります。