SQLインジェクション
掲載:2023年12月15日
用語集
「SQLインジェクション」とは、ウェブサイトにSQL文を注入(Injection)し、データベースを不正に操作するサイバー攻撃です。攻撃を受けたサイトは、情報流出やデータの改ざん、消去などの被害に遭うリスクがあります。また、盗まれた情報は他のサイバー攻撃や詐欺に悪用されることもあり、被害が広がるおそれのある危険な攻撃です。
SQLインジェクションの仕組みと脅威
SQLインジェクションは、攻撃者がウェブサイトへの不正アクセスやマルウェア感染を試みる必要はありません。脆弱性のあるウェブサイトを見つけ出し、入力フォームに不正なSQL文を入力するだけで攻撃を仕掛けられてしまいます。そのため、ログインフォームや検索バー、コメント入力欄などの入力フォームがあり、攻撃者にとって魅力的な個人情報や機密情報を扱うあらゆるサイトがターゲットになりうる攻撃です。
SQLインジェクションは古くからある攻撃手法ですが、今でもその脅威は健在です。情報処理推進機構(IPA)が発行する「情報セキュリティ白書 2023」によると、被害の届出がされたウェブサイトの脆弱性の中で、クロスサイトスクリプティングに次ぐ多さとなっています(P63、図 1-3-14 Webサイトの届出における脆弱性内訳)。
SQLインジェクションの対策
SQLインジェクションの被害を防ぐために、サイト運営者がとるべき主な対策は以下のとおりです。
- 入力値の検証(バリデーション)とSQLコマンドの無効化(エスケープ処理)
- SQL文をプレースホルダで実装し構文の置き換えを防ぐ
- 脆弱性のヒントになる詳細なエラーメッセージを表示しない
- フレームワークやCMSのバージョンを最新に保つ
ひとたび情報流出を引き起こせばウェブサイトの信用は失墜し、最悪の場合サービスの停止に追い込まれる可能性もあります。サイト運営者は、SQLインジェクションの被害からウェブサイトと利用者を守るため、前述のような対策を適切に行うことが重要です。