SQLインジェクションとは?具体的な攻撃手法と対策について。
Webセキュリティにおける3大脆弱性の1つが「SQLインジェクション」です。
ひとたびSQLインジェクションによる攻撃を受けてしまうと、Webサービス全体に甚大な被害を与えるだけに、その攻撃方法に関する知識はしっかり身に付けておきたいもの。
そこで今回は、SQLインジェクションの概要や具体的な攻撃方法、対策について解説します。
SQLインジェクションとは?
SQLインジェクションとは、Webサイトのバグ(セキュリティホール)を突いた攻撃方法の1つです。対象とするWebサイトに不正なSQLの命令を注入(インジェクション)し、データベースにアクセスします。
ひとたびこの攻撃を受けると、容易にデータベースの情報を引き出せる他、データの改ざんや破壊を行うことも可能です。その被害の甚大さから、Webセキュリティにおける3大脆弱の1つに数えられています。
SQLとデータベースの関係性は?
そもそもSQLとデータベースは、どのような仕組みなのでしょうか?
ECサイト等のWebサービスは、データベースを利用してシステムを稼働させています。データベースは例えるならエクセルの表のようなもの。列にIDや名前、パスワードが存在し、それぞれ行ごとに整理されています。
このデータベースからデータを取り出したり、加工したりするための言語がSQLです。
つまり、データベースは情報、SQLはその情報にアクセス・編集するための鍵という言い方ができるでしょう。
SQLインジェクションの攻撃手法
通常、ECサイトなどでログインを行う場合、IDとパスワードを入力します。システムが正常ならば、データベースの情報をID・パスワードと照らし合わせ、一致すればログインOK、不一致ならばエラーといった手順が踏まれます。
しかし、Webサイトに脆弱性がある場合、このログイン画面(ユーザー登録画面や検索窓からも可能)に不正なSQL文を入力すると、システムが正しい入力と勘違いしてしまい、データベースへのアクセスを許可してしまいます。
これはSQLインジェクションのログインスキップと呼ばれる代表的な攻撃手法の1つです。
データの取り出し・改ざん・破壊も可能
ログインスキップはSQLインジェクションの代表的な事例ですが、その他にもデータベースを全て取り出す方法や、データそのものの改ざん・破壊といった手法も挙げられます。
データベースには個人情報が大量に保存されているため、情報漏洩だけでなく二次被害にも繋がります。Webサービスそのものがストップするだけでなく、莫大な損害賠償が発生するケースも見られるなど、被害が拡大しやすいのもSQLインジェクションの脅威です。
SQLインジェクションを防ぐ対策は?
では、SQLインジェクションによる攻撃を受けないためには、どのような対策が挙げられるのでしょうか。
サイトの脆弱性そのものをなくす
SQLインジェクションは、Webサイトに存在している脆弱性を突く攻撃手法です。つまり、サイトの脆弱性をなくすことが基本的な対策方法となります。Webサイトの脆弱性診断等を行い、脆弱性が見つかれば直ちに修正・改善を行いましょう。
また、より具体的な手法としては、ユーザーがログイン画面(ユーザー登録画面や検索窓)で入力した文字を、そのまま使用しないようなシステムを構築しておきましょう。こうすることで、不正なSQL文を入力されたとしても、データベースへのアクセスを止めることができます。
いずれにしても、こうした知識をしっかりと持ったエンジニアの存在は不可欠で、セキュリティ対策を考える際は人材の確保や信頼の置ける外部サービスの利用も検討しておきましょう。
まとめ
今回はWebセキュリティにおける3大脆弱性の1つSQLインジェクションについて解説しました。
SQLインジェクションは、システムの脆弱性をついた攻撃手法で、Webサイトに保存されているデータベースに不正にアクセスされてしまいます。甚大な被害に繋がる手法だけに、サイト運営者は正しい知識と対策を講じておくことが重要でしょう。
現在KRAF(クラフ)では、私たちと一緒に働いてくれる仲間を募集しています。
セキュリティ診断を通して、社会に安心を提供し続ける仕事に一緒に取り組んでみませんか?まずは採用情報から、お仕事の内容や私たちの想いを覗いてみてください。