Posterous theme by Cory Watilo

magic quotes

Задавал я недавно нескольким девелам простой, казалось бы, вопрос. Но на него не отвечали. А вопрос такой: "Вот допустим, получили мы данные из формы, сразу же натравили на них addslashes(), отправили все это дело... не в БД, а на экран. И мы видим, что addslashes() применился дважды. Но смотрим в код - единожды. Почему такое случилось?" А случится такое могло из-за того, что не проверили перед тем, как применять addslashes, установлены ли magic_quotes. "Магические кавычки" - это, казалось бы, очень полезная вещь. Вы получаете данные из формы - и они уже с добавленными бэкслешами. Чего ж тут думать, берем и вносим их сразу в БД, подумали бы некоторые. И через пару дней работы такого сайта получим SQL-Injection или ошибки при выводе данных. И вот зная это, надо было проверить, включены ли "магические кавычки", и только после этого применять addslashes(). Кслову, я бы предпочел использовать mysql_real_escape_string() вместо кавычек. Ну вот и ответ на вопрос. А для более любопытных - http://www.webmasterstop.com/63.html. PS: а в PHP6 "магических кавычек" не будет. Все данные, как им и полагается, будут попадать в скрипт такими, какими их ввели. И по-моему это заставляет задуматься о фильтрации данных своими силами, что есть правильно.
| Viewed
times
Filed under: