PHP Magic Quotes Вопрос - PullRequest
5 голосов
/ 23 мая 2011

Я никогда не программировал в среде с включенными волшебными кавычками. Сейчас я работаю над проектом, где он находится. Вот как я настраивал принятые пользователем ситуации с данными:

$first_name = $_POST['first_name']
if(!get_magic_quotes_gpc()) {
    $first_name = mysql_real_escape_string($first_name);
}

С этой фильтрацией я все еще открыт для атак с использованием SQL-инъекций, когда включены магические кавычки?

Меня действительно беспокоит только то, что SQL-инъекция сломает мои запросы ... Другие белые списки, htmlspecialchar () -ing и т. Д. Для других областей.

Глядя на некоторые подобные вопросы SO, кажется, что вместо этого рекомендуется проверять магические кавычки, запускать «полоску» на данных, если они включены, а затем всегда запускать функцию escape. Я немного опасаюсь делать это таким образом, потому что весь существующий код на сайте предполагает, что он включен.

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 мая 2011

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

Я думаю, что вы уже ответили на часть вашего вопроса:

Глядя на некоторые подобные вопросы SO, кажется, что вместо этого рекомендуется проверять магические кавычки, запускать «полоску» на данных, если они включены, а затем всегда запускать функцию escape. Я немного опасаюсь делать это таким образом, потому что весь существующий код на сайте предполагает, что он включен.

Я бы также попытался инициировать проверку кода - найти все места, где используются данные, которые пишутся или используются в запросах к базе данных, а затем заменить на более безопасный выход. В конце концов, вы замените все эти короткие запросы и сможете навсегда отключить магические кавычки.

0 голосов
/ 23 мая 2011

Если вы используете mysql_real_escape_string (правильно), нет риска внедрения SQL.Это не значит, что вход будет в порядке.Если ваши настройки магических кавычек или любой другой материал задан неправильно, ваша переменная может содержать неверное значение.Однако это все еще безопасно.

...