SQLインジェクションの対策を解説!導入やチェックするべきものは?事例から学ぶ被害後の対応やおすすめのテスト方法もご紹介

民間企業や公的機関で運営されるシステムは、日々様々なセキュリティ攻撃のリスクにさらされています。

その脅威の一つがSQLインジェクションです。今回はSQLインジェクションとは何かを理解し、正しく対策を立てるための方法をご紹介します。

実際にシステム運用に携わる担当者の方のみならず、セキュリティ対策に関心のある一般の方にも理解できるようにまとめました。

5分程度で読める内容ですので、ぜひ最後までお付き合いください。

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

疑問

ここではSQLインジェクションの意味と仕組みについて説明します。

概要

SQLインジェクションは、日本語に即して言い換えると「不正なSQLを注入する」になります。

SQLはシステムにおけるデータの入れ物であるデータベースに指示を出し、データの持ち出しや書き換えをするためのプログラム言語です。

SQLインジェクションはデータの改ざん盗難を目的として、SQLに不正な指示を埋め込んでデータベースに送り込むことを意味します。

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

パズル

通常のシステムであれば、SQLによるデータベースの参照や更新はシステムの中では日常茶飯事です。

入力フォームや検索窓など、ユーザーからシステムに命令を出す仕組みがあるのは皆さまもよくご存じでしょう。

セキュリティ対策がなされているシステムであれば、想定外のSQLが入力された時、指示をそのまま処理せずに回避する仕組みがあります。

しかし、システムに脆弱性が存在すると不正なSQLを見抜けずにそのまま処理してしまい、データベースの参照や更新を許してしまうのです。

クロスサイトスクリプティングとの違いは?

代表的なセキュリティ攻撃にクロスサイトスクリプティングがあります。

これもWEBサイトの脆弱性をついて攻撃するものです。SQLインジェクションとの違いはWEBサイトに悪意のあるプログラムを仕掛ける点です。

SQLインジェクションは外からの攻撃ですが、クロスサイトスクリプティングは待ち伏せする攻撃と言えます。

SQLインジェクションの被害

ハッキング

ここからはSQLインジェクションによって発生する被害について説明します。

個人情報・機密の漏洩

セキュリティ

SQLインジェクションによる被害の中で、最も深刻なのが個人情報機密の漏洩です。

多くのシステムでは、重要度の差はあるものの、データベースに機密性の高い情報を保持しています。

不正なSQLによって機密情報が抜き出されると、システムを運営する企業にとっては、様々な危機が訪れるでしょう。

例えば技術力を売りにする会社であれば、競合他社に技術を盗まれて競争力が低下します。

また、個人情報を扱う企業であれば、市場からの信用を失い、既存顧客が離れていくでしょう。

いずれにしても情報漏洩は深刻な被害につながります。

WEBサイトの改ざん

改ざん

WEBサイトの改ざんも代表的な被害です。

SQLインジェクションが成功すると、データベースへの不正アクセスだけではなく、WEBサイトの内容も書き換えることができます。

よくある事例はWEBサイトを訪れるだけでウィルス感染するよう改ざんしてしまうパターンです。

特に多くのユーザーが訪れるWEBサイトが改ざんされてウィルスが埋め込まれると、ウィルス感染者は雪だるま式に増加します。

当然ながら、システム運営元の企業は対策を怠ったことへの責任を問われるでしょう。

SQLインジェクションが発生しやすい状況

ハッカー

SQLインジェクションの被害が発生しやすい状況とはどのようなものでしょうか。

ここでは人的リスクとシステムに関わるリスクに分類してみました。

本サイトの記事は犯罪に巻き込まれない、犯罪を未然に防ぐという観点から書かれたものであり、 実際に犯罪に巻き込まれた場合や身に迫る危険がある場合はすぐに最寄りの警察署までご相談ください。

■警察庁 各都道府県警察の被害相談窓口
http://www.npa.go.jp/higaisya/ichiran/index.html