SQL エスケープ/アンエスケープとは、テキスト入力をサニタイズして、SQL 文に安全に埋め込むことができるようにすることを指します。
エスケープは、引用符やバックスラッシュなどの特殊文字を、構文エラーや悪意のあるコードの実行を防ぐために変更します。
アンエスケープは、エスケープされた文字を元の形式に戻します。通常は表示やその後の処理に使用されます。
悪意のある入力によって SQL クエリのロジックが変更される可能性のある SQL インジェクション攻撃を防ぐためです。
データに '、"、\ などの文字が含まれている場合、クエリで 構文エラーを回避するため。
データの整合性を維持するため、ユーザー入力が入力どおりに保存および取得されるようにします。
エスケープは次のように行います。
文字列内の一重引用符を二重にします(例:'O'Brien' は 'O''Brien' になります)。
組み込みのデータベース関数またはライブラリを使用して、入力を適切にエスケープします。
エスケープ解除はデータの取得時に行われ、多くの場合、データベースまたはアプリケーション層によって自動的に処理されます。
現代の開発では、これは通常、パラメータ化されたクエリまたはORM(オブジェクトリレーショナルマッパー)によって管理され、安全かつ自動的にエスケープ処理されます。
生の SQL で直接 ユーザー入力を挿入またはクエリする場合(適切にエスケープされていない限り推奨されません)。
自動保護が実施されていない レガシーシステムまたは生の SQL 文字列 を扱う場合。
準備済みステートメントまたはパラメータ化されたクエリは、より推奨される安全な代替手段です。