0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQLインジェクション攻撃】でよく使われる文字列やキーワード

Posted at

SQLインジェクション攻撃でよく使われる文字列やキーワードには、以下のようなものがあります。これらは、悪意のあるユーザーが意図的に入力することでSQLクエリを改ざんし、データベースに不正な操作を実行させることを目的としています。

1. 基本的な文字列

  • --(ダブルハイフン):以降の文字列をコメントアウトし、SQL文の一部を無効にします。
  • '; --'; DROP TABLE users; --:閉じシングルクォートとコメントアウトを組み合わせて意図しないSQL文を追加する。
  • '; DELETE FROM table; --:テーブルの内容を削除する攻撃。
  • OR '1'='1':無条件で「真」にする条件を追加して、フィルタリングを無効化する。
  • OR 1=1:上記と同様に条件を「真」にするために使用される。
  • UNION SELECT:SQLのUNIONを使用して、別のクエリを結合してデータを引き出す。

2. 特殊な構文と関数

  • CASTCONVERT:データ型を変換する関数で、意図的に異なるデータ型を挿入する。
  • SLEEP():特にMySQLで使用され、サーバーを停止させる時間遅延攻撃。
  • WAITFOR DELAY:SQL Serverで使われる遅延関数。
  • EXEC xp_cmdshell:SQL Serverで、システムコマンドを実行させる意図を含む。

3. スクリプト系の注入

  • <script>alert('XSS');</script>:SQLだけでなく、クロスサイトスクリプティング(XSS)も狙ったコード。
  • '; EXEC('command') --:サブクエリやOSコマンドを実行するSQLを挿入。

4. 特定の条件と論理演算子

  • AND 'a'='a'OR 'a'='b':条件式を通過させるために使用。
  • ' OR '' = ':真または偽の評価を意図的に設定。

5. 特殊文字の例

  • シングルクォート ' とダブルクォート "
  • セミコロン ; とコメントアウト用の --#
  • バックスラッシュ \ やスラッシュ /

対策

これらの攻撃を防ぐには、SQL文を組み立てる際にパラメータ化クエリを使用し、入力値のバリデーションやサニタイズ(特定の特殊文字を無効化)を徹底することが重要です。また、必要に応じてデータベースアクセスの権限を制限することで、攻撃の影響を最小限に抑えることも有効です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?