Все данные перед заносом проходят
mysql_real_escape_string($var)Так же
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
$q = "insert into users(id, login, password, email, location, ip) values('NULL','$login','$db_pass','$email','$location','$ip')";Логин и эмаил проходят проверку регулярками, но если в поле location написать что-то типа
'привет"ага!~;
то оно в базу так и заносится, т.е. не экранируется, хоть и пропускается через mysql_real_escape_stringесли пропустить запрос к базе через echo:
echo '$q = "insert into users(id, login, password, email, location, ip) values('.NULL.','.$login.','.$db_pass.','.$email.','.$location.','.$ip.')"';получаем
$q = "insert into users(id, login, password, email, location, ip) values(,asdasd,85136c79cbf9fe36bb9d05d0639c70c265c18d37,asdasd@asd.asd,\"hello\'~;,127.0.0.1)"все экранируется...я туплю или как?
Спустя 11 минут, 14 секунд (16.05.2010 - 23:40) twin написал(а):
Эта функция экранирует кавычки только для транспортировки из скрипта в базу. Ни в базе, ни в последующем выводе бэкслэшей не будет.
Спустя 9 минут, 38 секунд (16.05.2010 - 23:50) Кир написал(а):
т.е. все нормально?
Спустя 1 час, 16 минут, 24 секунды (17.05.2010 - 01:06) FatCat написал(а):
Цитата (twin @ 17.05.2010 - 00:40) |
Эта функция экранирует кавычки только для транспортировки из скрипта в базу. |
Если мне нужно отправить в базу код \' - что сделает эта функция? Добавит бэкслэшь перед кавычкой и пробьет огромную брешь в безопасности?
Предпочитаю самое простое решение: str_relace-ом заменяю одиночную кавычку на две одиночные и больше ничего не трогаю.
Спустя 36 минут, 24 секунды (17.05.2010 - 01:43) Nikitian написал(а):
Цитата (FatCat @ 16.05.2010 - 22:06) | ||
Если мне нужно отправить в базу код \' - что сделает эта функция? Добавит бэкслэшь перед кавычкой и пробьет огромную брешь в безопасности? |
А попробуйте
Функция добавит 2 бэкслеша и в базу попадёт 2 символа: бэкслеш и кавычка. Все рады, всем мороженого.
Цитата (FatCat @ 16.05.2010 - 22:06) |
Предпочитаю самое простое решение: str_relace-ом заменяю одиночную кавычку на две одиночные и больше ничего не трогаю. |
Очень вредно так делать. Вот пример кода, который пострадает от таких преобразований:
<a href="#" onclick="alert('Hey-hey!');return false;">Click here</a>