MAGIC_QUOTES()を使用すると、mysql_real_escape_string()の使用に影響します
-
30-09-2019 - |
質問
私が持っているなら magic_quotes
スイッチを入れて使用します mysql_real_escape_string
, 、弦は二重に逃げますか?それは問題を引き起こしますか?
に基づいてそう思います get_magic_quotes()
機能しますが、確認を求めています。
(PSこの質問をする方が、私たちが持っているすべてのセキュリティを備えた私のオフィスでテストするよりも簡単です - 使用可能な環境を取得するためにすべてを構成するには10-15が必要です)
解決
get/post/cookie入力から取得した値を逃がすと、すでにあります addslashes()
それに適用されるので、それを渡します mysql_real_escape_string()
実際、二重の見積もりになります。
emを剥ぎ取る:
if (get_magic_quotes_gpc())
{
$_GET = json_decode(stripslashes(json_encode($_GET, JSON_HEX_APOS)), true);
$_POST = json_decode(stripslashes(json_encode($_POST, JSON_HEX_APOS)), true);
$_COOKIE = json_decode(stripslashes(json_encode($_COOKIE, JSON_HEX_APOS)), true);
$_REQUEST = json_decode(stripslashes(json_encode($_REQUEST, JSON_HEX_APOS)), true);
ini_set('magic_quotes_gpc', 0);
}
この質問 引用符を剥奪 /恐ろしいものに対処するための他のいくつかのオプションがあります magic_quotes_gpc
php 'feature'。
他のヒント
読む のドキュメント mysql_real_escape_string
(これも難しくないことを願っています):
ノート: もしも
magic_quotes_gpc
有効になり、最初に適用されますstripslashes()
データに。すでに逃げられているデータでこの関数を使用すると、データが2回逃げます。
もちろん、最も簡単な方法は、Magic_Quotesをオフにすることです。
通常のPHP/Apache設定、この行
php_flag magic_quotes_gpc 0
の中に .htaccess
ファイルは物事を行います。
ただし、互換性の目的では、一部の構成ファイルでも関数を使用できます。
if ( get_magic_quotes_gpc( ) ) {
$_GET = array_map_recursive('stripslashes', $_GET) ;
$_POST = array_map_recursive('stripslashes', $_POST) ;
$_COOKIE = array_map_recursive('stripslashes', $_COOKIE) ;
$_REQUEST = array_map_recursive('stripslashes', $_REQUEST) ;
if (isset($_SERVER['PHP_AUTH_USER'])) stripslashes($_SERVER['PHP_AUTH_USER']);
if (isset($_SERVER['PHP_AUTH_PW'])) stripslashes($_SERVER['PHP_AUTH_PW']);
}
最も簡単なものの1つ
Magic_Quotesがオンになっていて、mysql_real_escape_stringを使用している場合、トリングは二重に逃げますか?
はい、そうでしょうが、あなたはこのようなことをすることができます:
if (get_magic_quotes_gpc())
{
$escaped = stripslashes($your_vars);
}
ノート: php.iniから魔法の引用を無効にするか、以下の関数を使用してオーバーライドできます。
// no more magic quotes
function get_magic_quotes_gpc()
{
return false;
}