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. Это не значит, что вход будет в порядке. Если ваши настройки магических кавычек или любой другой материал задан неправильно, ваша переменная может содержать неверное значение. Это все еще безопасно однако.