PHP 5.3 автоматически ускоряет $ _GET / $ _ POST из строк формы?

Мой администратор сервера недавно обновил до 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 будет несколько автоматическим. 🙂

EDIT: На самом деле, мне нужно отключить его. Иногда я собираю данные формы и отправляю ее в клиентскую форму, если что-то не так (т. Е. Отсутствует поле), поэтому я не хочу, чтобы у него / нее появлялись слеши из ниоткуда.

Solutions Collecting From Web of "PHP 5.3 автоматически ускоряет $ _GET / $ _ POST из строк формы?"

Эта «функция» известна как magic_quotes_gpc и не защищает вас от всех атак SQL-инъекций ( addslashes вызывается для каждого элемента входных суперглобалов, таких как $_POST и $_GET . Это игнорирует фактическую кодировку ввода / базы данных). Поэтому он устарел и не должен использоваться .

Официальное руководство по php включает в себя аккуратный способ отменить его в php-коде , но вы должны просто отключить его .

Это из-за магических цитат , вы должны отключить его.

И вот как вы отключите его: http://www.php.net/manual/en/security.magicquotes.disabling.php

Вы делаете это либо через php.ini, либо удаляя косые черты из всех переменных в $_GET и $_POST , очевидно, что первый – это рекомендуемый способ.


Как предполагает Мартин, вы также можете изменить его с помощью .htaccess следующим образом:

 php_flag magic_quotes_gpc off

Подробнее здесь: http://php.net/manual/en/configuration.changes.php

Похоже, что ваш сервер включил магические кавычки – вы можете посмотреть http://www.php.net/manual/en/security.magicquotes.disabling.php для подробного обсуждения способов их отключения.