My Photo

« SQLインジェクション その5 | Main | SQLインジェクション その7 »

October 13, 2013

SQLインジェクション その6

関連記事:
SQLインジェクション その1
SQLインジェクション その2
SQLインジェクション その3
SQLインジェクション その4
SQLインジェクション その5

脆弱性の原因

文字列リテラルの問題

SQLでは文字列リテラルはシングルクウォートで囲む。文字列リテラル中にシングルクウォートを含めたい場合はシングルクウォートを重ねてエスケープする。
SQLインジェクション脆弱性のあるアプリケーションではエスケープが抜けているため、例えば "O'Reilly" をパラメータとして渡した場合に以下のようなSQLが組み立てられる。

SELECT * FROM books WHERE author='O'Reilly'

"O"の後ろでシングルクウォートで文字列リテラレルが終了され、後続の"Reilly'"が文字列リテラルをはみ出した状態となる。このはみ出した部分に意味を持つ文字列を入れるのがSQLインジェクション攻撃である。

数値項目に対するSQLインジェクション

数値リテラルに起因するSQL脆弱性もある。
スクリプト言語の多くは変数に方の制約がない。例として以下のSQLを考える。$ageには数値が入ることを想定している。

SELECT * FROM employees WHERE age < $age

ここで変数$ageに以下の文字列が入った場合、SQLインジェクション攻撃となる。

1;DELETE FROM employees

この場合、組み立てられるSQLは以下のようになるり、表employeesが全削除される。

SELECT * FROM employees WHERE age < 1;DELETE FROM employees

参考文献:体系的に学ぶWebアプリケーションの作り方 4.4.1 SQLインジェクション

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践
徳丸 浩

ソフトバンククリエイティブ 2011-03-03
売り上げランキング : 4070

Amazonで詳しく見る
by G-Tools

« SQLインジェクション その5 | Main | SQLインジェクション その7 »

SQL」カテゴリの記事

セキュリティ」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/58379532

Listed below are links to weblogs that reference SQLインジェクション その6:

« SQLインジェクション その5 | Main | SQLインジェクション その7 »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof