エスケープ?サニタイズ?
● エスケープとは?
SQL、コマンドなど、それぞれの文脈で特別な意味を持つ文字をただの文字として扱いたいときにする処理。
例)SQLでバックスラッシュを付与 ‘ → \’
select * from xxx where id='\'';
例)コマンドの引数
$ echo $HOME
/home/admin ← 変数として展開
$ echo \$HOME
$HOME ← ただの文字
例)正規表現
キャプチャしたい (.+) カッコを検索したい \(.+\)
例)JSONで / や ” など
{ "url":"http:\/\/www.softel.co.jp\/" }
● エンティティ化
HTMLの場合、正確には「エンティティ化」。
(エンティティ変換、エンティティエンコード/デコード)
これもエスケープと言ってしまうことはよくある。
例)HTMLの予約済み文字
< → < > → > & → & " → "
例)HTMLの &~~;
© ← © ♥ ← ♥
● サニタイズとは?
上の2つは指しているものが明確だが、サニタイズは何を指すか文脈による。
エスケープやエンティティ化のことを指していることもある。
無毒化といった意味合いで、何かしらの追加の処理も含んでいることもある。
例)対応できない特定の文字を変換
例)メールアドレスの仕様に合わない文字を削除
例)フレームワークのsanitizeメソッド
何を何と呼ぶかは文化や人によって違ったりする。
その場で通じればまあいいかなとは思います。
コメント