私のサーバー管理者は最近 PHP 5.3 にアップグレードしましたが、奇妙な「バグ」(または、PHP 関係者が持っている機能) が発生しています。mysql_real_escape_string
明らかな安全上の理由から、文字列形式のデータのほとんどを使用していましたが、このエスケープは PHP によって既に行われているようです。
<?php
echo $_GET["escaped"];
?>
<form method="get">
<input type="text" name="escaped" />
</form>
たとえばescape 'this test'
、を入力すると、これが出力されますescape \'this test\'
。POST
の代わりに使用する場合も同様ですGET
。
これは 5.3 のアップグレードに直接関連しているのでしょうか、それとも管理者が php.ini ファイルで自動切り替えをトリガーしたのでしょうか?
また、そのままにしておく必要があります (実際にすべての get および post 変数を正しくキャッチする優れた失敗防止メカニズムである場合)、またはそれを無効にする必要があります (可能であれば!) に戻る必要がありmysql_real_escape_string
ますか? 私の直感では、アプローチ 2 が最適ですが、アプローチ 1 はやや自動化されています。:)
編集:実際には、無効にする必要があります。フォーム データを収集し、何か問題があった場合 (つまり、フィールドが不足している場合) にそれをクライアント フォームに再送信することがあります。