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 :: Защита от инъекций

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Поставить защиту от SQL-инъекций
Евгений 777
Отправлено: 02 Сентября, 2010 - 17:12:32
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Добрый день всем участникам форума! Сразу хочу извиниться, если создаю уже существующую тему, ткните пальцем где она есть уже. В общем изучаю php и строю сайт с бд mysql. В настоящее время смотрю на сайтах по программированию, как избежать вредоносных кодов из адресной строки. Столько всего написано, я что то не могу сообразить как что сделать. Читал про функцию urlencode но по моему это ерунда. Также видел и функцию mysql_real_escape_string(), только даже просмотрев примеры использования, так и не понял толком как правильно её использовать. Только большая просьба, напишите какой нибудь простенький пример с комментами, что к чему, иначе могу не понять. Заранее огромное спасибо всем!


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
JustUserR
Отправлено: 02 Сентября, 2010 - 17:25:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Евгений 777 пишет:
Также видел и функцию mysql_real_escape_string(), только даже просмотрев примеры использования, так и не понял толком как правильно её использовать
Суть функции mysql_real_escape_string заключается в том что благодаря ее применению вся передаваемая информация проходит предврительное экранирование - и таким образом когда вы подставить полученные значение от пользователя в SQL-запрос то они не смогут нарушить его синтаксис - и также выполнить свои действия поскольку будут представлены в виде строки Кроме того данная функция учитывая кодовую таблицы для SQL-соединения - что позволяет избежать некоторых проблем с трактование разных спецсимволов в различых кодировках


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Евгений 777
Отправлено: 02 Сентября, 2010 - 17:47:54
Post Id



Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Июль 2010  
Откуда: Мурманск


Помог: 0 раз(а)




Спасибо. Можете на примере пояснить как с её помощью обработать адресную строку?
И я так понимаю, что когда буду делать регистрацию пользователей, форму с данными надо будет обрабатывать точно также.


-----
Написать код не проблема. Написать правильный код- это наука.
 
 Top
JustUserR
Отправлено: 02 Сентября, 2010 - 17:52:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Евгений 777 пишет:
Спасибо. Можете на примере пояснить как с её помощью обработать адресную строку?
Пожалуйста! Функция mysql_real_escape_string используется именно для обработки различные значений которые будут интерполироваться в строковую констанку с исходным SQL-запросом - в частности они могут специфицироваться из переданных пользователем значений в GET/POST-запросах Таким образом сами переменные из строки запроса не подлежат фактическому экранированию или проверке поскольку они сами по себе не используются на уровне трактования исполненяемого кода - тем не менее при подстановку их в SQL-запрос возникает такая задача для решения которой и используется вышеуказанная функция


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Bertolomych
Отправлено: 02 Сентября, 2010 - 21:49:37
Post Id



Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




ой, JustUserR, а растолкуйте пожалуйста, в чем разница между addslashes() и mysql_real_escape_string() ? Все почему-то рекомендуют вторую, а мне нравится первая (ввиду того, что все наставленные ею слеши потом можно легко убрать с помощью stripslashes())
 
 Top
Viper
Отправлено: 03 Сентября, 2010 - 08:42:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Bertolomych вторая эскейпит
CODE (htmlphp):
скопировать код в буфер обмена
  1. \x00, \n, \r, \, ', ", \x1a
первая только


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
JustUserR
Отправлено: 03 Сентября, 2010 - 13:53:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 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/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB