入力

モード:

出力

SQLエスケープとは?

O'Brienのような名前を持つユーザーの入力でSQLクエリが壊れた経験はありませんか?そのアポストロフィが問題の原因です。エスケープなしでは、SQLインジェクション攻撃の入り口になります(OWASP Top 10に記載された主要な脆弱性の一つ)。SQLエスケープは特殊文字を変換し、文字列をSQL クエリに安全に埋め込めるようにするプロセスです。パラメータ化クエリ(プリペアドステートメント)が推奨されますが、レガシーシステムや動的SQLでは手動エスケープが必要な場面もあります。参考: PostgreSQL文字列ドキュメントおよびMySQLリテラルガイド

SQLで最も一般的なエスケープはシングルクォートの重複です:'''になります。

SQLエスケープツールの使い方

1

SQL文字列を貼り付ける

エスケープしたいSQL文字列を左の入力エディタに貼り付けてください。

2

モードを選択

エスケープまたはアンエスケープを選択してください。

3

コピーまたはダウンロード

結果をクリップボードにコピーするか、.sqlファイルとしてダウンロードできます。

SQLエスケープの例

SQL文字列エスケープの例を以下に示します:

生のSQL文字列

SQL入力

エスケープ済みSQL文字列

エスケープ済みSQL

SQLエスケープが重要な場面

SQLインジェクション攻撃を防ぐために、ユーザーが提供した入力を常にエスケープしてください。

SQLクエリの整形には、SQLフォーマッターツールをご利用ください。

よくある質問

SQLエスケープはどの文字を処理しますか?

シングルクォート'''に重複(標準SQL)。バックスラッシュ\\\に重複(MySQLなど)。MySQL、PostgreSQL、SQLite、SQL Serverをカバー。

パラメータ化クエリの代わりにSQLエスケープを使うべきですか?

いいえ — 新規コードではパラメータ化クエリが常に推奨されます。SQLエスケープはレガシーシステムやアプリケーションコード外でのデータ処理に有用です。

このツールはMySQL、PostgreSQL、SQL Serverで使えますか?

一般的なケースではYes。シングルクォートの重複は全主要データベースで標準。バックスラッシュエスケープはMySQL固有 — PostgreSQLは標準重複かE'...'を使用。

私のSQLデータはサーバーに送信されますか?

いいえ。全ての処理はブラウザ内で行われます。SQLがデバイスから外に出ることはなく、バックエンドも存在しません。

SQLインジェクションとは何で、エスケープはどう役立ちますか?

SQLインジェクションは悪意ある入力で意図しないSQLコマンドを実行する攻撃です。適切なエスケープにより、注入された文字がSQL構文として解釈されるのを防ぎます。

関連ツール

参考: OWASP SQLインジェクション防止