SQLインジェクションは、ECサイト運営に携わる事業者が今最も警戒すべきサイバー攻撃の一つです。この攻撃を受けた場合、正しいセキュリティ対策ができていなければ個人情報が流出してしまうことがあるため、正しい予防を実施する必要があります。
この記事ではSQLインジェクションの一般的な手口や、攻撃のリスクを小さくするための対策方法について解説します。
SQLインジェクションとは、Webサイトやアプリケーションで使われるデータベースを不正に操作する攻撃方法です。
SQLと呼ばれるデータベース用の言語を利用し、正しいセキュリティ対策ができていないWebサイトやアプリケーション経由で、データベースに保管されている情報へアクセスし、不正にデータを持ち出したり、書き換えたりするといったような、悪質な攻撃です。
そのSQLインジェクションの標的となりやすいのが、ECサイトや会員登録が必要なWebサイトです。攻撃者はこれらのサイトに用意されているログインフォームや会員登録フォームを経由してSQLを流し込むため、事前に対策を施しておかなければなりません。
SQLインジェクションによる被害は決して無視できるものではなく、いずれの被害も甚大な損失を招く可能性があります。
例えばデータベースへの不正アクセスを許すと、顧客情報などの個人情報が外部に流出してしまいます。個人情報の流出は近年多くの企業が被害を受けており、一度でも発生すれば企業のブランド価値に大きな傷を付けることになるでしょう。
あるいは不正にIDを入手しユーザーアカウントを乗っ取ることで、顧客に身に覚えのない買い物を大量に行わせるといった行為も懸念されます。
またデータベースへの不正なアクセスによってデータ改ざんが発生すれば、正しい情報が失われてしまうことで、顧客情報などがまとめて失われる可能性もあるでしょう。
いずれにせよ、SQLインジェクションの被害は深刻なものとなるケースが多く、未然に防ぐことのできる仕組み作りが重要です。
SQLインジェクションの主な手口は、上でもご紹介したように、アプリケーションやWebサイト上に設けられている入力フォームを狙ったものがほとんどです。
通常、ログインフォームなどは正しい入力が行われなければ、「ID・パスワードが異なります」といったエラーを吐き出す設定になっています。
しかし、特定のコマンドをフォームに入力すると、対策が行われていないサイトの場合それをそのままコマンドとして受け入れてしまい、第三者によるデータベース操作が可能となってしまうのです。
この脆弱性を利用し、攻撃者は不特定多数のサイトで不正なSQL文を入力することで、データベース操作が可能なサイトを特定し攻撃を実行します。
SQLインジェクションに対して重要なのは、基本的な脆弱性対策を怠らないことです。最新のセキュリティアップデートを実行し、各種サービスで発見されたセキュリティホールを逐一塞ぎましょう。
不正なSQL文に対抗するためには、エスケープ処理が有効です。エスケープ処理は、SQL文のような特殊な文字列が入力された際も、文字の置き換えなどを実行することで、コマンドとして受け付けないよう加工するものです。
また、エスケープ処理と合わせて活用したいのがプレースホルダです。プレースホルダは外部から指定された要素を別途格納するための場所を指します。SQL文が入力された際、プレースホルダにその文章を格納するため、コマンドとして入力されることを回避できます。
外部にWebサイト制作を委託する場合には、こういったSQLインジェクション対策を丁寧に施してもらえるよう、事前に要件を定義しておく必要があるでしょう。
この記事では、SQLインジェクションによってもたらされる被害や、具体的にどうやって回避すべきかをご紹介しました。
SQLインジェクションの被害は後を絶たず、日本国内での被害事例も増えつつあります。被害を防ぐためには、まずSQLインジェクションがどんな攻撃方法なのか、そしてどうすれば対策できるのかを知ることが大切です。
正しい対策方法について学び、自社サイトに脆弱性が無いよう日頃からチェックしておきましょう。