TUKURU株式会社

アイコンシルバー
東京都

いまさら聞けないWebセキュリティ基礎知識

はじめに

今回はおもむろにWebセキュリティの解説をしたいと思います。

Webセキュリティといっても様々なので、今回はそのうちの1つである
「SQLインジェクション」について説明します。

SQLインジェクションとは?

そもそもSQLとは何ぞや?ですが
SQL(Structured Query Language)という
データベースを操作するための言語をとなります。
SQLインジェクションはSQLを用いた攻撃で、
こちらを利用されると顧客の情報を流出させられたり、
システムに壊滅的なダメージを与えることができます。

いったいどんなことされちゃうのか?

例えばこちらのようなSQLでユーザー情報を取得しているプログラムがあったとします

SELECT * FROM users WHERE id = '(入力A)' AND password ='(入力B)';

こちらのSQLの意味は
[users]テーブルから
[id]が(入力A)且つ[password]が(入力B)のデータを取得する

(入力A)にはフォームからのユーザーID,
(入力B)にはフォームからのパスワードが入るシンプルなSQLです
(入力A)は何も入力せずに、
(入力B)に以下のような情報が入力された場合どうなるでしょうか?
(入力B) =(' or 'A' = 'A)

生成されるSQLはこちらになります。

SELECT * FROM users WHERE id = '' AND password =''  OR 'A' = 'A';

こちらのSQLの意味は

[users]テーブルから

[id]が空文字且つ[password]が空文字

または、'A' = 'A'が成立するユーザー

のデータを取得する

当たり前ですが'A'は常に'A'ですよね?

つまり、こちらのSQLは必ず成立し、実行されると必ずログインが成功します。

では以下のような情報が入力されたらどうなるでしょうか?

(入力B) =('; DROP TABLE users where 'A' = 'A)

生成されるSQLはこちらです

SELECT * FROM users WHERE id = '' AND password =''; DROP TABLE users WHERE 'A' = 'A';

;はSQLの命令を区切るもので、
そのあとに自由なSQLをつなげることができます。

DROP TABLE users where 'A' = 'A';

こちらのSQLの意味は
[users]テーブルの情報を全て削除するという意味になります。
('A' = 'A'は常に成立するのでしたね)
攻撃者がusersテーブルの名前を知っておく必要がありますが
SQLインジェクションを駆使すればそちらを調べることも不可能ではありません。

SQLインジェクションを防ぐには

こちらの問題点は、特殊な意味を持つ'(シングルクォーテーション)などを
プログラムが特別な意味のまま解釈していることが問題でした。

こういった特別な意味を持つ文字が入力された時
その意味意味を取り除いて、単なる文字列として解釈させることで防ぐことが可能となります

これをエスケープ処理といいます

とはいっても、昨今のモダンなWebフレームワークを利用している場合は
付属のORMを使うことでエスケープ処理を自動でしてくれているのているのでほとんどの場合
意識せずとも対策されているかと思います。

ですが、生のSQLを発行する際、これらの意識が抜けていると重大なセキュリティホールとなりますので
知識としては知っておく必要があります。

ご相談はこちらから

企画や要件が固まっていないご相談でも
お気軽にお問い合わせください。

  1. 01

    相談する

  2. 02

    要件ヒアリング

  3. 03

    専門企業のご紹介

  4. 04

    企業との
    ご面談&見積取得

  5. 05

    企業選定〜契約締結
    サポート

  6. 06

    専門企業と直接
    プロジェクト進行

※ステップ5以降はご希望に応じて
サポートいたします。

お急ぎの方はお電話で

03-6427-5422

サポートデスク直通(平日10:00〜18:00)

必須お名前
必須メールアドレス
必須電話番号
必須会社名
任意依頼内容・希望
利用規約及び、個人情報保護方針にご同意のうえ、送信ください。

申し込み完了後、サポートデスクから
お電話またはメールにてご連絡させていただきます。

本サイトは、reCAPTCHAとGoogleにより保護されています。(プライバシーポリシー利用規約)

EDITOR PROFILE

TUKURU株式会社

程原雄作

TUKURU株式会社
エンジニア

TUKURU株式会社

東京都
WEBサービス開発 スマホアプリ開発 ソフトウェア・業務システム開発

TUKURU株式会社でできること

  • WEBサービス開発

    Webプリ開発など

  • スマホアプリ開発

    iOSアプリ、Androidアプリ開発など

  • ソフトウェア・業務システム開発

    システム開発など

会社選び・業者探しに迷った方はこちら
ご要望にあった会社を無料でご紹介いたします!
専門のサポートデスクがヒアリングを行い、
要件にあった最適な企業・業者をご紹介いたします。
ご要望にあった会社を無料でご紹介いたします