ITキーワード

【初心者向け】SQL インジェクションの対策とは?仕組みと概要を解説

企業の情報を脅かすサイバー攻撃のひとつに SQL インジェクションがあります。本記事では SQL インジェクションについて概要や仕組みや影響、対策を網羅的に紹介します。大事な情報を守るセキュリティ対策にぜひ本記事の内容を役立ててください。

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

ここからは SQL インジェクションについて、SQL の意味と SQL インジェクションの定義、SQL インジェクションとクロスサイトスクリプティングはなにが違うのかについて解説していきます。

SQL とは?

SQL とはデータベースを操作したり定義したりするための言葉です。データベースには数百万件以上のデータが保存されますが、これらは SQL により効率よく操作できます。例えば SQL では以下のような操作が可能です。

  • データの更新
  • データの追加
  • データの削除
  • データの検索
  • ユーザー権限の付与
  • テーブルの作成
  • テーブルの削除
  • テーブルの主キーの設定

ちなみに SQL は国際標準化機構により標準化されており、多種多様なデータベースで利用可能です。

SQL インジェクションの意味と定義

インジェクションとは英語で「注入」「挿入」といった意味があります。そのため、SQL インジェクションとは SQL のデータベースに不正なプログラムを注入、挿入するサーバー攻撃の総称になります。この攻撃により例えば情報漏えいや消去、改ざん、悪用されるといった被害を受ける可能性があります。

過去には SQL インジェクションによる攻撃の影響で個人情報が数十万件流出してしまったという事例もあります。SQL インジェクションはウェブサイトの脆弱性を狙った攻撃の中でも悪用された時の被害が大きいと言えるでしょう。

SQL インジェクションとクロスサイトスクリプティングは何が違うのか?

同じサイバー攻撃でも SQL インジェクションに似た攻撃に、クロスサイトスクリプティングがあります。クロスサイトスクリプティングとは脆弱性のあるウェブサイトに対して攻撃を行い、ユーザーの個人情報やパソコンそのものを乗っ取る手法です。ウェブサイトの脆弱性を狙っている点では両者とも同じです。

しかし、SQL インジェクションの場合、SQL によるデータサーバーを使う点が異なります。
いずれにしてもウェブサイトの脆弱性を狙った攻撃ですので、サイト運営者は両方への対策を取る必要があります。

SQL インジェクションの仕組みと影響とは

ここからは SQL インジェクションの仕組みと影響について詳しく解説していきます。

SQL インジェクションの仕組み

SQL インジェクションの仕組みとして、攻撃者が SQL サーバー(データベースサーバー)を操作する命令文を作成することが挙げられます。SQL サーバーは決済を伴う EC サイトや、会員登録を行うポータルサイトなどで利用されており、代表的な例がユーザー ID やパスワードを入力するサイトです。そのため、ウェブサイトとデータベースが連携しているサイトが SQL インジェクションの標的となります。

Web サイトは通常、ユーザー ID やパスワードを入力すると不正な文字列が入力されていないか入力エリアのチェックが行われます。しかし、入力エリアに脆弱性があると SQL 分を含ませた文字列を入力させた際、不正な SQL が実行されます。 その結果、データベースの操作が可能となり、個人情報の流出に繋がるという仕組みになっています。

SQL インジェクションが引き起こす影響と被害

ここからは、SQL インジェクションが引き起こす影響と被害について以下のとおり解説します。

  • Web サイトの改ざん
  • 個人情報、機密情報の漏えい

Web サイトの改ざん

SQL インジェクションによる攻撃は対象の Web サイトを改ざんできます。データベースを利用した改ざんは大きな被害になることも多々あります。例えば Web サイトのサービスを脅かすことはもちろん、Web サイトに訪れた利用者も巻き込みます。具体的には利用者が Web サイトのページを開いたらマルウェアが実行され、不正な動作が行われるなどです。

個人情報、機密情報の漏えい

SQL インジェクション攻撃を受けると Web サイトを利用する全ユーザーの個人情報が漏えいする可能性があります。例えば、会員情報はもちろん不正ログインに使用できるパスワードや ID も対象です。SQL インジェクション攻撃の特長は、個々のパスワードや ID が漏えいするケースと違うということです。特定のユーザーだけでなく、Web サイトを利用する全ユーザーの個人情報が流出してしまいます。そのため、大きな影響を受けてしまう結果につながります。

4つの SQL インジェクション対策

ここからは SQL インジェクション対策について以下の内容をそれぞれ紹介します。

エスケープ処理を行う

SQL インジェクション対策として、もっとも効果的な方法がエスケープ処理です。エスケープ処理とは、プログラム言語で使用される特別な文字や記号をルールに沿って、別の文字列に書き換えることです。SQL インジェクション対策の場合はセミコロン(;)やシングルクォート(‘)などの記号が対象になります。

これらの特殊文字を普通の文字として認識するように設定することで、攻撃者が仮に不正な SQL を送り込んできたとしても、それを無効化にできます。

想定している文字以外は使わない

入力ボックスに想定している文字以外使わないことも、SQL インジェクション対策に効果的です。例えば電話番号や郵便番号を入力するフォームやボックスでは特殊文字(〒など)を使わずに選択式にすることなどがあげられます。

具体的には、半角数字の入力以外も入力禁止にするなどです。SQL インジェクションは特殊文字を使用しないと攻撃できないため、そうすることで SQL インジェクションを防御できます。また、想定している文字以外は使わない方法に POD を使うという方法もあります。

データベースサーバーのログを監視・解析する

データベースサーバーのログを監視・解析することで、どのデータが書き換えられたのか、抽出されたデータの範囲などを把握できます。具体的には、データベースに不正な SQL 文が送信されていないかを監視・解析したり、データベースサーバーのユーザーによる SQL 文送信以外の操作ログを監視・解析したりします。その結果、普段は使われていない SQL 文の発見や、権限昇格によるシステムログへの攻撃を察知できます。

セキュリティソフトを導入する

SQL インジェクション攻撃はセキュリティソフトでも抑えることができます。セキュリティソフトは SQL インジェクション攻撃を含むあらゆる WEB 上の攻撃を防ぐことができます。ただし Web サイト利用者側は対策になったとしても、Web 運営者側は対策にならない点に注意が必要です。その他、脆弱性診断サービスで Web サイトにあらかじめ脆弱性がないかをチェックする方法もあります。

まとめ

SQL インジェクションは、SQL のデータベースに不正なプラグラムを注入し、不正に操作するサイバー攻撃です。SQL インジェクション攻撃を受けると、Web サイトを利用する全ユーザーの情報が流出する可能性があります。本記事で紹介した対策方法などを参考にして被害に遭わないように気をつけてください。

サイバー攻撃の対策にはクラウド型の WAF および DDoS 対策サービス「Imperva Cloud WAF (旧 Incapsula)」がおすすめです。信頼性の高いクラウド WAF ・クラウドサービス提供拠点が世界中に存在 しているため、DDoS 攻撃などのサイバー攻撃の対策ができます。