SQLインジェクションとは 〜重要なWEBセキュリティ対策〜

せっかく一生懸命Webサイトを制作しても、ネット上にあるあらゆるサイバー攻撃によってシステムが攻撃されるのはたまったもんじゃありません。

そこで今回はバックエンドの基礎知識として、サイトを守るためのWebセキュリティ対策を学んで行きたいと思います。

WEBセキュリティ対策とは

主にWebサイトのシステムの「脆弱性」を狙ったサイバー攻撃を防ぐための策を意味します。
「脆弱性」とはセキュリティ上の欠陥のことで、「セキュリティホール」とも呼ばれます。

脆弱性を狙った主な3つの攻撃

  • SQLインジェクション
  • XXS(クロスサイトスクリプティング)
  • ブルートフォースアタック(総当たり攻撃)

今回はまず以上の中でもSQLインジェクションについて解説して行きたいと思います。

SQLインジェクションとは

SQLインジェクションとは、脆弱性を狙った主なサイバー攻撃の一つです。
管理サーバーのデーターベースを参照することでサービスを提供するWEBサイト(ショッピング系ECサイトなど)に対して、本来サイト側が想定している命令とは別のSQL文章を送信することで、不正に個人情報や機密情報を引き出すというサイバー攻撃を指します。

SQLインジェクションの原因

根本的な原因は、WEBアプリケーションが不正アクセスの意図があるとは知らず、外部から送信されたSQL文章を誤解してしまうことにあります。
そもそもWEBアプリケーションの多くは、ユーザーが入力した情報をSQLと呼ばれる言語に変換することで動作しています。
攻撃者はこの性質を利用して、例えば「カード情報を開示しろ」というSQL形式で命令を送ります。
その結果、上記のような正規の命令だと認識する「誤解」が起きてしまい、情報が流出してしまいます。

SQLインジェクションを受けやすいサイト

SQLインジェクションのターゲットにされやすいサイトは、大量のデータを保有していてSQLで制御が必要な、ショッピングサイトやポータルサイト、決済サイトなどが当てはまります。

SQLインジェクションを受けてしまうと・・・

SQLインジェクションによる攻撃を受けると、データーベースに記録されている情報が抜き出されてしまいます。
被害は攻撃者が求めている情報によりますが、企業コンテンツが攻撃対象となった場合は、とくに以下の被害が懸念されます。

  • 登録ユーザーのカード情報の漏洩(データベースに情報が残る決済方式の場合)
  • 取引顧客の個人情報や契約内容
  • WEBサイトの改ざんによる多種多様な被害

SQLインジェクションを受けないために

バインドメカニズムの導入

バンドメカニズムとはSQL文章のひな形を準備した上で、プレースホルダに入力情報に基づいたひな形を割り当てることで、SQL文章を生成する機能のことです。
不正なSQL文章を直接反映するわけではないため、実行を阻止することができます。

WAFの導入

WAFはwebアプリケーションレベルでの防御を行うため、SQLインジェクションに対して有効な防御策です。
そもそもWAF(Web Application Firewal)とは、Webアプリケーションの通信を監視する専用のセキュリティシステムのことです。
WAFはWebアプリへの不審なアクセスや、データの流出を検知すると通信をブロックしてくれます。
また、ユーザーのリクエスト内容をチェックすることができるため、SQLインジェクションだけではなく、この後の記事でも紹介するXSSによる被害防止にも役立ちます。

SQLインジェクションのテストを実施

SQLインジェクションは入力された命令に従って、WebアプリケーションがデータベースへSQLクエリを送信することで行われます。
そのため、検索フォームやログインフォームなど、SQLクエリ送信が行われる場所に対してテストを行うことで、自社サービスの安全性をテストすることができます。

自社でテストを行うことが技術的に難しい場合、セキュリティを専門としている企業に対して、テストの実施を要請すると良いでしょう。
また、利用を検討しているセキュリティ企業がある場合、SQLインジェクションに対する質問は必ず行っておくべき事案です。

今回のまとめ

さてSQLインジェクションについてご理解いただけましたか?
過去にSQLインジェクションによって情報が漏洩してしまった事態は数えきれないません。
このようなサイバー攻撃が無くならないことも腹立たしく思うが、攻撃に備えることの大切さをわかっていただければ幸いです。
次回も引き続きWEBセキュリティ対策を学習していきます。

関連記事

コメント

この記事へのコメントはありません。