PHP Magic Quotes Вопрос

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

$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 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам