SQLインジェクション

  1. バックエンド
  2. 11 view

バックエンド

WEBセキュリティ対策の基礎知識 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インジェクションに対して有効な防御策である。

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

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

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

今回得られたこと

過去にSQLインジェクションによって情報が漏洩してしまった事態は数えきれない。このようなサイバー攻撃が無くならないことも腹立たしく思うが、攻撃に備えることの大切さを学んだ。

関連記事

XSS

XSSとは クロスサイトスクリプティング(XSS)とは、ターゲットとしたWebサイトの脆弱性を悪用して罠を仕掛け、攻撃者が悪質なサイトへ誘導(サイトをクロス)す…

  • 10 view

WEBセキュリティ対策の3種の神器

神器その1 ファイアウォールファイアウォールとは ファイアウォールは元々ほとんどのパソコンに組み込まれている。セキュリティ対策として行うべき最初のステッ…

  • 25 view

UIとUXとは

フロントエンドWEBディレクターに必要なWEB制作の基礎知識 1デザイン(UIとUX)の知識UIとUXを自分なりにまとめてみた!…

  • 15 view

ブルートフォースアタック

ブルートフォースアタックとはユーザのアカウント・パスワードを解読するため、考えられる全てのパターンを試す方法で、文字通り総当たりの攻撃のこと。ブルートフ…

  • 13 view

コメント

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

  1. この記事へのトラックバックはありません。