記事内に間違っている点や不明瞭な点がありましたらご指摘ください~~~
PHPの文字列エスケープに関する設定と関数は以下の通りです:
1.magic_quotes_runtime
2. >3.addslashes()およびstripslashes()
4.mysql_escape_string()
5.addcslashes()およびstripcslashes()
6.htmlentities()およびhtml_entity_decode()
7.および htmlspecialchars_decode()
magic_quotes_runtime がオンになっている場合、PHP のほとんどの関数は、外部からインポートされたデータ (データベースやファイルを含む) 内のオーバーフロー文字にバックスラッシュを自動的に追加します。
set_magic_quotes_runtime() と get_magic_quotes_runtime() を使用してステータスを設定および検出できます。
注: これら 2 つの関数は PHP 5.3.0 以降では非推奨になりました。つまり、このオプションは PHP 5.3.0 以降ではオフになります。
Magic_quotes_gpc は、GPC によって送信されるデータ (GET、POST、COOKIE) 内の特定の文字を自動的にエスケープするかどうかを設定します。
get_magic_quotes_gpc() を使用してその設定を検出できます。
この設定がオンになっていない場合は、addslashes() 関数を使用して文字列を追加およびエスケープできます。
addslashes() 指定した定義済み文字の前にバックスラッシュを追加します。
定義済みの文字には、一重引用符 (')、二重引用符 (")、バックスラッシュ ()、NUL (ヌル文字) があります。
上記は W3SCHOOL.COM.CN の説明です。私はいつもそう思っています。はあまり正確ではありません
magic_quotes_sybase=on の場合、一重引用符 (') が二重引用符 (") に変換されます。magic_quotes_sybase=off の場合、一重引用符 (') が (') に変換されます。
ストリップスラッシュ() 関数 この関数は、addslashes() の逆の機能で、エスケープ効果を削除します。
mysql_escape_string() は、SQL ステートメントで使用される文字列内の特殊文字をエスケープします。
ここでの特殊なものには、(x00)、(n)、(r)、()、( ')、(")、(x1a) が含まれます。
addcslashes()C 言語スタイルでは reverse を使用します。スラッシュは文字列内の文字をエスケープします。この関数が使用されることはほとんどありませんが、文字 0、a、b、f、n、r、t、v をエスケープすることを選択すると、それらは次のように変換されることに注意してください。
>> XSS の脆弱性を防ぐために、ユーザーの入力または出力中に HTML エンティティのエスケープを使用してください。
今日、ファイル内の特殊文字に関する問題に遭遇しました。php で次のような問題に気づきました。
* 区切り文字として単一引用符を含む PHP 文字。エスケープ ' および \
* 区切り文字として二重引用符を使用した PHP 文字列は、次のエスケープをサポートします:
n ライン フィード (LF または ASCII 文字 0x0A (10))
r キャリッジ リターン (CR または ASCII 文字 0x0D ( 13))
t 水平タブ (HT または ASCII 文字 0x09 (9))
\ バックスラッシュ
$ ドル記号
" 二重引用符
[0-7]{1,3} これ正規表現シーケンスは 8 進表記で表される文字に一致します
x[0-9A-Fa-f]{1,2} この正規表現シーケンスは 16 進表記で表される文字に一致します
いくつかの例を挙げると:
を含む