Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Добрый день всем участникам форума! Сразу хочу извиниться, если создаю уже существующую тему, ткните пальцем где она есть уже. В общем изучаю php и строю сайт с бд mysql. В настоящее время смотрю на сайтах по программированию, как избежать вредоносных кодов из адресной строки. Столько всего написано, я что то не могу сообразить как что сделать. Читал про функцию urlencode но по моему это ерунда. Также видел и функцию mysql_real_escape_string(), только даже просмотрев примеры использования, так и не понял толком как правильно её использовать. Только большая просьба, напишите какой нибудь простенький пример с комментами, что к чему, иначе могу не понять. Заранее огромное спасибо всем!
----- Написать код не проблема. Написать правильный код- это наука.
JustUserR
Отправлено: 02 Сентября, 2010 - 17:25:47
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Евгений 777 пишет:
Также видел и функцию mysql_real_escape_string(), только даже просмотрев примеры использования, так и не понял толком как правильно её использовать
Суть функции mysql_real_escape_string заключается в том что благодаря ее применению вся передаваемая информация проходит предврительное экранирование - и таким образом когда вы подставить полученные значение от пользователя в SQL-запрос то они не смогут нарушить его синтаксис - и также выполнить свои действия поскольку будут представлены в виде строки Кроме того данная функция учитывая кодовую таблицы для SQL-соединения - что позволяет избежать некоторых проблем с трактование разных спецсимволов в различых кодировках
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Евгений 777
Отправлено: 02 Сентября, 2010 - 17:47:54
Гость
Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010 Откуда: Мурманск
Помог: 0 раз(а)
Спасибо. Можете на примере пояснить как с её помощью обработать адресную строку?
И я так понимаю, что когда буду делать регистрацию пользователей, форму с данными надо будет обрабатывать точно также.
----- Написать код не проблема. Написать правильный код- это наука.
JustUserR
Отправлено: 02 Сентября, 2010 - 17:52:01
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Евгений 777 пишет:
Спасибо. Можете на примере пояснить как с её помощью обработать адресную строку?
Пожалуйста! Функция mysql_real_escape_string используется именно для обработки различные значений которые будут интерполироваться в строковую констанку с исходным SQL-запросом - в частности они могут специфицироваться из переданных пользователем значений в GET/POST-запросах Таким образом сами переменные из строки запроса не подлежат фактическому экранированию или проверке поскольку они сами по себе не используются на уровне трактования исполненяемого кода - тем не менее при подстановку их в SQL-запрос возникает такая задача для решения которой и используется вышеуказанная функция
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Bertolomych
Отправлено: 02 Сентября, 2010 - 21:49:37
Новичок
Покинул форум
Сообщений всего: 40
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
ой, JustUserR, а растолкуйте пожалуйста, в чем разница между addslashes() и mysql_real_escape_string() ? Все почему-то рекомендуют вторую, а мне нравится первая (ввиду того, что все наставленные ею слеши потом можно легко убрать с помощью stripslashes())
Viper
Отправлено: 03 Сентября, 2010 - 08:42:05
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Bertolomych пишет:
Ой, JustUserR, а растолкуйте пожалуйста, в чем разница между addslashes() и mysql_real_escape_string()
Функция mysql_real_escape_string осуществляет экранирование строковой информации в соответствии с некоторым ресурсом соединения к БД - в частности он должен передаваться ей во втором аргументе и в случае его отсутствия берется один из созданных ресурсов - или генерируется предупреждение если соединение с БД не было открыто То есть данная функция пытается учесть возможные особенности текущего подключения к БД - а именно кодовые таблицы для трактования передаваемых и получаемых данных и кодировку внутренней хранимой информации - это необходимо для того чтобы при несовпадении кодовых таблиц некоторые данные не были пропущены в SQL-запрос даже если с точки зрения текущей кодировки PHP-скрипта они не являются специфическими
Bertolomych пишет:
А мне нравится первая (ввиду того, что все наставленные ею слеши потом можно легко убрать с помощью stripslashes())
Функция mysql_real_escape_string не предназначена для экранирования строковой информации внутри самого PHP-скрипта для определенных целей - она используется по принципу только для данных интерполируемых в SQL-запрос - при этом так как процесс экранирования в отличие от шифрования является односторонним то обратная функция вовсе не требуется
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.