Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Отличие в плане безопасности
mysql_query("UPDATE `table` SET `var`='".$var."' ");
Меня интересует разница в плане безопасности....по всем мануалам первый вариант категорически запрещен, а правильный второй...Но чем отличаются они, если все что в посте, помещается в другую переменную и она же идет в запрос?? Не подскажете?
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
RickMan пишет:
Меня интересует разница в плане безопасности....по всем мануалам первый вариант категорически запрещен, а правильный второй...Но чем отличаются они, если все что в посте, помещается в другую переменную и она же идет в запрос?? Не подскажете?
Ничем, оба не безопастны Правельный вариант уже написали выше.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
KingStar
Отправлено: 15 Декабря, 2012 - 19:36:29
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
Правильный вариант перейти на MySQLi или PDO
----- То что программа работает, не означает что она написана правильно!
RickMan
Отправлено: 15 Декабря, 2012 - 19:58:38
Участник
Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012
Помог: 30 раз(а)
Ну MYSQLI и PDO я наслышан но тут вопрос именно по MYSQL... про mysql_real_escape_string я понял, а возможно сделать так: в файле коннекта к базе прописать:
mysql_query("UPDATE `table` SET `var`='".$_POST['var']."' ");
Так нормально или нет?
LIME
Отправлено: 15 Декабря, 2012 - 20:17:44
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
KingStar и что?
код тс в pdo станет безопасным?Отредактировано администратором: EuGen, 15 Декабря, 2012 - 20:26:56 Прошу относиться ко всем участникам конференции с уважением. Устное предупреждение
KingStar
Отправлено: 15 Декабря, 2012 - 20:48:37
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
LIME вообще-то это был сарказм, если в голове нет - то здесь ничто не поможет ((( (Добавление)
и судя по "Отредактировано администратором" и тебе того же, тем же, и по тому же месту
----- То что программа работает, не означает что она написана правильно!
Bio man
Отправлено: 15 Декабря, 2012 - 20:50:14
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
LIME, prepared statements и param binding сделает код более безопасным от инъекций чем всякие escape_string.
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
Bio man пишет:
а почему бы не просто
Чтобы изменились значения элементов массива, надо их передавать в функцию (которая передаётся в array_walk() вторым аргументом) по ссылке.
Bio man
Отправлено: 15 Декабря, 2012 - 20:58:31
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
armancho7777777, в доки не смотрел, но логика подсказывает, что array_walk принимает
0. замикание
1. callable ф-цию одного аргумента, или просто имя ф-ции
так почему же? если можно передать "trim" то почему нельзя "mysql_real_escape_string"?
PS, глянул в доки, массив и так по ссылке передается. (Добавление)
ладно, понял свою ошибку. но все же странно это...
Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012
Помог: 30 раз(а)
DeepVarvar пишет:
RickMan пишет:
В итоге все переменные гет и пост пройдут эту фильтрацию
А потом вдруг где-нибудь выяснится, что понадобилось реальное не эскейпнутое значение какого-либо ключа. Что тогда делать будете?
я думаю это единичный случай от силы...если такое нужно будет то тогда в функции format_string пропишу проверку на переменную и не буду её фильтровать...зато при горе переменных пост и гет, не надо выискивать каждую и чистить её...а их поверьте куча...
DeepVarvar
Отправлено: 15 Декабря, 2012 - 21:12:16
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Неверный подход у вас. Эскейпить нужно непосредственно перед запросом а не заранее.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.