【イラストでわかりやすく解説】SQLインジェクションとは?仕組みと対策を紹介

更新日 : 2023年05月15日

sql-injection-image1.png

昨今の国際情勢の影響もあり、日本へのサイバー攻撃が深刻化しています。

2022年9月にはロシアからのSQLインジェクションが急増しているというニュースもありました。

このSQLインジェクションの被害を受けた場合、その企業は被害者にもなり、加害者にもなりえてしまうため、この事態は他人事ではありません。

本コラムでは、SQLインジェクションとはなにか、攻撃手法の解説や対策をご紹介します。

組織が運営しているウェブサイトのセキュリティ強化を検討しているかたはぜひご覧ください。

目次

  1. SQLインジェクションとは
  2. 想定される被害の影響
  3. 対策
  4. 脆弱性診断とは、必要な理由
  5. まとめ

SQLインジェクションとは

SQLインジェクションとは、第三者がSQLコマンドを悪用してデータベースの情報へ不正にアクセスし、情報を搾取や改ざん、削除する攻撃手法を指します。

具体的には、ウェブサイトに設置されたお問い合わせフォームなどの入力フォームに対し、攻撃者が不正に情報を引き出させるSQL文を入力されるケースがあります。

特にECサイトや会員制のウェブサイトでは個人情報がデータベースに格納されていることもあり、より一層の注意を払う必要がありますが、SQLインジェクションは運営主体やウェブサイトの性質を問わず、MySQLやMicrosoft SQL Server、Oracle、DB2などのデータベースを利用するウェブアプリケーションを設置しているウェブサイトであれば存在しうる問題です。

SQLインジェクションの仕組みについて、かみ砕いた説明を下記のイラストにまとめています。(実際のシステムとは若干異なりますのでご了承ください)

動画でも解説しています

このコラムで解説している内容を動画にしました。動画で確認されたい方はあわせてご覧ください。

SQLインジェクションの仕組み(参考元

入力された文字を検索するシステムがあったとします。システムでは「いぬの画像を探す」というリクエストを「いぬノイラストヲサガス」を受け取ります。ここのカタカナの箇所はシステムが読める言葉と解釈してください。
通常であれば、システムは「いぬ」のイラストを探し、その結果をユーザーへ返します。
ここで悪意を持った人がわざと、システムだけが読み取れることがを入力したらどうなるでしょうか。本来であれば「「コジンジョウホウヲニュウリョクシテカラいぬ」ノイラストヲサガス」と処理されます。
セキュリティ対策が甘いシステムの場合、「コジンジョウホウヲヒョウジシテカラ「いぬ」ノイラストヲサガス」と処理され、悪意を持った人へ個人情報を表示させてしまい情報漏洩が発生してしまいます。

想定される被害の影響

SQLインジェクションの被害にあった場合どのような影響があるのか、ウェブサイト運営会社と利用者(ユーザー)それぞれの立場で一例をご紹介します。

ウェブサイト運営者にとっての被害

  1. 不正ログイン、乗っ取り、他社への攻撃の踏み台などの悪用

  2. ウェブサイトに記載している内容の改ざん
  3. データベースにある個人情報の漏えい

  4. データベースにある情報の消去や改ざん、それに伴うサービス停止や復旧

  5. 個人情報漏洩に関する諸経費(賠償金や訴訟費用など)

ユーザー(閲覧者)にとっての被害

  1. 個人情報の漏えいによりカードの不正利用などの二次被害

  2. ウェブサイト閲覧によるマルウェア感染

ソフトウェア等の脆弱性関連情報に関する届出状況2022年第1四半期の「ウェブサイトの修正に要した脆弱性種別の日数の傾向」によると、31日以上かかった割合が多いのは「SQLインジェクション」でした。被害にあわないための対策、有事の際の対処方法を予め準備することをおすすめします。

参考

独立行政法人情報処理推進機構セキュリティセンター(IPA):ソフトウェア等の脆弱性関連情報に関する届出状況[2022年第1四半期(1月~3月)]

対策

SQLインジェクションの対応策として、IPAが発行している「安全なウェブサイトの作り方」には根本的解決策と保険的対策として下記の通り記載されています。

  • SQL文の組み立ては全てプレースホルダで実装する
  • SQL文の組み立てを文字列連結により行う場合は、エスケープ処理等を行うデータベースエンジンのAPIを用いて、SQL文のリテラルを正しく構成する。
  • ウェブアプリケーションに渡されるパラメータにSQL文を直接指定しない。
  • エラーメッセージをそのままブラウザに表示しない。
  • データベースアカウントに適切な権限を与える。

また、これらに加えて下記の対策も有効と言えるでしょう。

      • 定期的にアクセスログから攻撃数を検出し、攻撃内容の解析を行う。
      • 定期的にウェブサイト全体の脆弱性診断を行う。
      • ウェブアプリケーションファイアウォール(WAF)を利用する。

ウェブサイトの開発・運用を外部へ委託している場合も丸投げにはせず、どのようなセキュリティ対策を実施しているのかを確認してみましょう。

脆弱性診断とは、必要な理由

脆弱性診断とは、システム上に欠点がないか診断します。

定期的な脆弱性診断の実施はウェブサイトの脆弱性を早期発見につながり、SQLインジェクションなどの脆弱性をついたサイバー攻撃のリスク削減にもつながります。

自社は大企業ではないから運営しているウェブサイトは脆弱性があったとしてもサイバー攻撃に合うはずがない、は誤解です。

弊社エンジニアがWordPressで作ったウェブサイトに、どれくらいサイバー攻撃が来たのか、どんな種類の攻撃を受けたのか検証した結果をブログに記しています。

技術者コラム「Azureへのウェブ攻撃の実態」

本コラムでは、最も使われているCMS「WordPress」をAzureのIaaS環境にセットアップし、ウェブサイト公開後、最初の攻撃を受けるまでどれくらいかかるのかや、どのような攻撃がどれくらいの数あるのかなど検証結果をまとめています。

コラムを読む≫

まずは、自社のウェブサイトに脆弱性があるか現状を把握してみてはいかがでしょうか。JBサービス株式会社では、お客様の運用中のWebページに潜む脆弱性を診断、その結果をレポートとしてご提供します。

「Web脆弱性診断」
サービス詳細はこちら≫

まとめ

SQLインジェクションとはなにか、攻撃手法や対策方法についてご紹介しました。

安全なウェブサイトを保つためには、SQLインジェクションだけでなく、流行りのサイバー攻撃の情報を定期的に仕入れて、自社が対応できているかどうか確認の上、適応していくことが重要です。

SQLインジェクション以外にも脆弱性をついたサイバー攻撃はさまざま存在します。それぞれのサイバー攻撃の特長や、対策が必要に関して、下記ホワイトペーパーにまとめています。

また対策の最後に記したWAFの選び方についても記載していますので、ウェブセキュリティの強化を検討中の方はぜひダウンロードしてください。

無料ダウンロード
slider_image1
slider_image2

【コスト比較表も】安全なWebサイトの運営で気を付けるべきポイントとWAF製品サービスの選び方

Webサイトのセキュリティ対策で気を付けるべき脆弱性の原因と対策をまとめました。チェックリストもありますので、ご活用ください。

ダウンロード»

対策例の最後に記載したWAFに関して、JBサービス株式会社ではクラウドWAFサービスを提供しています。

SQLインジェクションを含む一般的なWebアプリケーションへの攻撃を防御に加え、常時SSL/TLS化やWeb脆弱性スキャンなどの機能も含めて、お手軽な月額料金でご提供します。

サービス内容に関しては、下記の関連サービスからご確認ください。

関連サービス
〔クラウド型WAF〕Barracuda WAF-as-a-Service SMAC Edition|Webセキュリティ対策

〔クラウド型WAF〕Barracuda WAF-as-a-Service SMAC Edition|Webセキュリティ対策

Barracuda WAF as a Serviceは、Webサイトをサイバー攻撃から防御するクラウド型Webセキュリティサービスです。JBサービス株式会社は、企業の情報セキュリティ対策や最適なIT運用のためのご支援・ソリューションをご提供いたします。

詳しく »