ホーム » IT情報 » SQLインジェクションとは?攻撃方法と想定される被害を解説

SQLインジェクションとは?攻撃方法と想定される被害を解説

SQLインジェクションとは?

「サイバー攻撃」と聞くと窃取のイメージからは遠いかもしれないが、ITデータが盗難される犯罪のひとつだ。なかでもSQLインジェクションは、被害にあった者(主に企業・組織)が加害者になる可能性もあり、2次被害、3次被害…と拡大する恐れがあるため注意しておきたい。
ここでは、SQLインジェクションとは何か、その攻撃手法や想定される被害についてお伝えしていく。
これまでSQLインジェクションについて聞いたことのない方は、ぜひこの機会に知っておいてほしい。

SQLインジェクションとは

悪意のある者が「SQLコマンド」を利用してデータベース情報に不正アクセスし、情報を搾取したり改ざんしたり、削除したりしてしまうサイバー攻撃のひとつ。

企業や組織のWebサイトに設置された「問い合わせフォーム」などの入力フォームに対して攻撃されることが多く、不正情報を引き出させるSQL文を入力されることで行われる。
ネット通販のサイトや会員制のWebサイトの場合、個人情報がデータベースに格納されていることがあるため注意が必要だ。
また、サイトの性質に限らず、MySQLやMicrosoft SQL Server、Oracle、DB2などのデータベースを利用するWebアプリケーションを設置しているサイトにも起こり得るため、これらのサイトはどれも被害に遭う可能性がある。

SQLインジェクションで起こり得る被害・影響

SQLインジェクションで被害を受けるのは、入力フォームを設置しているWebサイト運営者だけではない。
サイトを閲覧したユーザーにも影響を及ぼす可能性がある。

サイト運営者に起こり得る被害は、データベース上の個人情報の漏洩や不正ログイン、乗っ取り被害、サイトの内容改ざんだ。さらに、情報の消去や改ざんによって、サービスの停止を余儀なくされたり他社への攻撃に悪用されたりするケースもある。

ユーザーに起こり得る影響は、個人情報の漏洩によるクレジットカードの不正利用、闇市場での情報売買による2次被害だ。SQLインジェクションの被害に遭ったWebサイトから「マルウェア」ウイルスに感染することもあるため、どんなWebサイトであっても、利用する際は強固なセキュリティ対策が求められる。

SQLインジェクションに遭わないための対策

独立行政法人 情報処理推進機構(IPA)によると、SQLインジェクションに遭わないための具体的な対策方法は以下の通りだ。

  • SQL文の組み立ては全てプレースホルダで実装する
  • SQL文の組み立てを文字列連結によって行う場合は、エスケープ処理などを行うデータベースエンジンのAPIを用いて、SQL文のリテラルを正しく構成する
  • ウェブアプリケーションに渡されるパラメータにSQL文を直接指定しない
  • エラーメッセージを、そのままブラウザに表示しない
  • データベースアカウントに適切な権限を与える

SQLインジェクションは、運営するWebサイトのみならず、第三者にも被害や影響を及ぼすやっかいな攻撃だ。
Webサイトを開発する際は上記のようなセキュリティ対策を実施する、また、開発や運用を外部へ委託する場合にも対策が施されているか、しっかりと確認することが大切だ。