Зачем использовать mysql_real_escape_string (), поскольку $ _POST автоматически добавляет косую черту перед кавычкой? - PullRequest
3 голосов
/ 17 ноября 2009

В PHP $ _POST автоматически добавляет косую черту перед кавычкой, так зачем же применять mysql_real_escape_string ()? Например, когда я ввожу 'rrr в поле ввода, и я получаю \'rrr, когда я его повторяю.

Ответы [ 3 ]

11 голосов
/ 17 ноября 2009

Потому что это происходит только в том случае, если MacigQuotes включен в вашей конфигурации php, что, насколько я знаю, в наше время довольно редко. Кроме того, mysql_real_escape_string также экранирует другие связанные с MySQL символы.

Проверьте http://php.net/manual/en/security.magicquotes.php для получения дополнительной информации о магических кавычках.

Как видите, для этой директивы уже есть предупреждение об устаревании, поэтому вам все равно следует проверить конфигурацию сервера ^^

Изменить: Чтобы отключить магические кавычки, найдите в папке xampp файл php.ini и добавьте или измените, если есть, следующие директивы:

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
6 голосов
/ 17 ноября 2009
  1. mysql_real_escape_string экранирует не только одинарные кавычки, поскольку существуют другие символы, которые могут вызвать проблемы с инъекцией.
  2. PHP добавляет косые черты к вводу POST, только если включена magic_quotes, что считается плохой практикой (потому что это приводит к лени и не использует такие вещи, как real_escape_string!)
3 голосов
/ 17 ноября 2009

Магические кавычки устарело с PHP 5.3.0 и устарело с PHP 6.0.

Редактировать: Таким образом, на автоматические косые черты нельзя положиться, потому что они устарели в большинстве установок PHP и скоро вообще не будут работать.

...