Обычным способом перехода сайтов с magic_quotes_gpc
является добавление функции-оболочки:
function m($s) {
if (get_magic_quotes_gpc())
$s= stripslashes($s);
return mysql_real_escape_string($s);
}
mysql_query("SELECT * FROM foo WHERE bar='".m($_GET['baz'])."'");
Это устранит проблему, связанную с тем, что addslashes
не будет осведомлен о наборе символов, что в некоторых случаях может привести к его уязвимости, и, как правило, заставит код продолжать «работать», как и раньше.
Однако в долгосрочной перспективе полагаться на экранирование ввода невозможно, так как он будет умножать косые черты на входные строки, которые вы не вставляете в базу данных, и не сможет избежать строк, которые вы вставляете в базу данных из других источников. Это реальная причина, по которой magic_quotes_gpc
неправильный: он применяет кодирование выходного каскада к входному каскаду.
Так что добавьте функцию-обертку и затем медленно обновляйте все SQL-интерполяции, чтобы использовать ее. Получив их все, вы можете отключить магические кавычки.