メインコンテンツまでスキップ

SQL Injection

Overview

SQLインジェクションについてまとめる。

Resource

ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)

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

フォームnおフィールドに以下のような文字列を入力し、意図しない動作(エラーや不正なデータ取得)が起こらないかを確認する。

  • もし全データが取得されるならSQLインジェクションの影響を受けている可能性あり。
  • 予期しないエラーが出る場合も、クエリが適切に処理されていない可能性あり。
  • q.toSQL() を使って発行されるSQLをログに出力し、不正なSQLが含まれていないかチェック。
<form method="POST" action="/search">
<input type="text" name="gameTitle" value="' OR '1'='1">
<button type="submit">検索</button>
</form>

フォームに入れるテストデータ一覧

番号テスト文字列目的
1' OR '1'='1全データ取得攻撃
2test' --クエリを途中で打ち切る
3' UNION SELECT 1,2,3,4 --データ漏洩
4% _ ' " ; --特殊文字の処理確認
5%ワイルドカードによる意図しないデータ取得