![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| underW |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 22.9.2008 Репутация: 1 Всего: 3 |
допустим, есть url такого вида:
по значению $_GET[q] происходит выборка с базы
Вопрос: как правильно обработать переменную $_GET[q], что бы избежать разных неприятностей, в случае передачи в q каких то "левых" значений? и второй вопрос, как правильно обработать $_GET[q], если его значение будет записываться в базу:
|
||||||
|
|||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
насчет вставки данных в SQL запрос.
Если у тебя используется низкоуровнеый доступ(при помощи функций mysql_*), то для экранирования надо использовать mysql_real_escape_string. Если у тебя используется библиотека-прослойка-абстракция(навроде PDO или adodb_lite), то обычно существуют механизмы параметризации запросов:
в этом случае экранирование реализуется библиотекой. насчет хранения данных. любые данные, будучи записанными в БД, хранятся там без проблем. Вопрос в другом: как ты собираешься потом использовать эти данные? Если эти данные представляют собой HTML-разметку из относительно доверенного источника(например, администратор сайта вбил новый шаблон, который надо вывести как HTML) - то просто выводишь. Если эти данные выводятся разным пользователям и получены из недостаточно доверенного источника(комментарий к новости от одного из пользователей сайта), то лучше экранировать HTML-код при помощи htmlspecialchars или обрабатывать при помощи strip_tags. В противном случае, один пользователь может испортить жизнь другим пользователям разными способами: вставляя в HTML-код своего сообщения ссылки на левые вредоносные javascript, перенаправления на другие сайты и т.д. А твоему сайту от этого ничего не будет. Это немного разные угрозы. |
|||
|
||||
| Ипатьев |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Добавлю, что для конкретного приведенного здесь случая mysql_real_escape_string не решит проблему. Если мы обрабатываем данные этой функцией, то их еще надо обрамлять в запросе кавычками. Иначе ее использование не принесет пользы.
Надо, чтобы в итоге получилось
При использовании параметризации об этом думать не надо.
ответ: точно так же. правила подстановки данных в запросы совершенно одинаковы и не зависят от типа запроса. |
||||
|
|||||
| underW |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 142 Регистрация: 22.9.2008 Репутация: 1 Всего: 3 |
ребят, спасибо, на основе ваших подсказок давай рыться и нашел вот это: тут рассмотрено все, что связано с правильным составлением запросов к БД.
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |