セキュリティ対策の専門家でないサイト運営者の皆さんにとって、Webサイトセキュリティは疑問だらけ。
EC/オンラインショップ、顧客/会員管理、企業ホームページ、BtoBサイト…など、様々なWebサイトに共通の対策を分かりやすく解説します!

【2】 SQLインジェクションによる顧客情報流出 ― 不正アクセスの横綱!
【3】 ガンブラー攻撃 ― あなたのサイトがいつの間にか加害者に? 【4】 ECサイトのセキュリティ「なぜ不正アクセスの被害を受けやすいのか?」 【5】Pマーク(プライバシーマーク)の取得・維持に必要なWebサイトセキュリティ対策「SQLインジェクション」という言葉を聞いたことがあるでしょうか?
その発生頻度と被害の大きさを考えると、これこそがWebサイトのセキュリティにとって最大の脅威といっても過言ではありません。
Webサイトへの不正アクセス事件で大きく報道されるもののうち、実に8~9割以上がこの攻撃によって引き起こされているとの見方もあります。極論をいうと、もしWebサイトに他の問題があっても、SQLインジェクション攻撃への対策をしっかりやっていれば、大規模な個人情報流出などの被害が発生する可能性はかなり低くなるでしょう。Webサイトセキュリティの基本はまずここから、そして、サイト運営を続ける以上、最低限これだけは対策を行ってください!
2011年9月30日

SQLインジェクションを簡単に説明すると、Webサイトで扱う大切な情報が保存されている場所(データベース)に無理やりアクセスすることです。データベースには、それを扱うための独特な命令があるのですが(“SQL”とはデータベースに命令を出すための言語)、悪意ある攻撃者は特殊な命令をパソコンから送り、データベース上のお客様情報等をごっそり抜き取ろうとします。
Webサイトには、たとえば会員登録をするページがありますが、そこで入力された情報はHTTPやHTTPSというやり取りを通じてWebサーバに送られます。一般の利用者が入力する個人情報もそのように送られます。そのデータがデータベースに保管されていて、必要なときに参照したり更新したりするのですが、その参照したり更新したりするような振りをして攻撃者が不正に情報にアクセスしてしまうことがSQLインジェクションです。
詳しい仕組みや対策はどうしても専門的な話になってしまいますので、ここでは割愛しますが、SQLインジェクションの被害が起こる原因はWebアプリケーションに不具合(=脆弱性)があるためです。これを防止するには大きく2種類の対策があります。一つはWebアプリケーションの脆弱性診断を実施し、不具合を改修すること。もう一つはWebアプリケーションファイアウォール(WAF)を導入し、もし不具合があっても攻撃を無効にしてしまうことです。脆弱性診断やWAFについてはまた別の機会に詳しくご説明いたします。

上の図は、不正な文字列により認証を回避するSQLインジェクションの攻撃の例です。
データベースのSQLクエリのパラメータとなる入力に、攻撃者は不正な文字列を入力して【1】、不正なSQLクエリを実行させます【2】【3】。
不正アクセスによるWebサイトからの情報漏えい事件の原因は、その多くがSQLインジェクションによるものとなります。