昔々、ある城には、貴重な宝物が保管されていました。城の入り口には、特定の言葉を話さなければ開かない魔法の扉がありました。
ある日、悪賢い盗賊が城に忍び込み、魔法の言葉を変えてしまいました。彼は特別な言葉を使って扉を開け、城の中に入り、宝物を盗み出しました。
これが「SQLインジェクション」のたとえ話です。
SQLインジェクションは、データベースにアクセスするための特別な言葉(SQLコマンド)を変更する攻撃方法です。攻撃者は、通常の入力欄に特殊なコマンドを入力することで、データベースにアクセスし、情報を盗み出すことができます。無害な文字列に置き換えるサニタイジングなどが対処方法になります。
2012年に発生したLinkedInのデータ侵害事件は、SQLインジェクション攻撃の一例です。攻撃者はSQLインジェクションを利用してLinkedInのデータベースにアクセスし、650万件のユーザーパスワードを盗み出しました。この事件は、ウェブアプリケーションのセキュリティの重要性を改めて浮き彫りにしました。
別の事例では、ある市の公共サービスウェ
A. データベースに不正なSQLコードを注入する攻撃
B. サーバーの物理的なハードウェアにダメージを与える攻撃
C. ユーザーのパスワードを無理やり取得する攻撃
A. データベースを頻繁にバックアップする
B. SQLクエリにユーザー入力を直接含める
C. プレースホルダーを使用してSQL文を安全に作成する
A. クレジットカード情報を入力するフォーム
B. 検索ボックスにユーザーが入力したテキストがそのままSQLクエリに使用されるフォーム
C. プライバシーポリシーの表示ページ