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 :: PDO Sql инъекции

 PHP.SU

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


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

> Без описания
cac95
Отправлено: 04 Декабря, 2013 - 16:24:23
Post Id



Гость


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


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




Всё таки решил проект перевести на PDO (всё равно пока сырой проект).
Но подскажите по SQL инъекции.

Вот пример запроса:
PHP:
скопировать код в буфер обмена
  1. $page_db = $db->query("SELECT * FROM `page` WHERE `page_id` = ".intval($_GET['id'])." LIMIT 1");
  2. $page_db->setFetchMode(PDO::FETCH_ASSOC);
  3. $row = $page_db->fetch();


Ссылка выглядит так:
http://www[dot]site[dot]ru/page/1

Есть ли здесь sql инъекция и как их предотвратить в pdo?
 
 Top
caballero
Отправлено: 04 Декабря, 2013 - 16:29:08
Post Id


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


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


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




может хотя бы почитаешь сначала что оно такое sql инекции?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Deonis
Отправлено: 04 Декабря, 2013 - 18:48:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




может хотя бы почитаете об одной интересной особенности, которая используется в PDO (и не только) - placeholders?

(Отредактировано автором: 04 Декабря, 2013 - 18:49:40)

 
 Top
cac95
Отправлено: 05 Декабря, 2013 - 17:32:39
Post Id



Гость


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


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




Deonis пишет:
может хотя бы почитаете об одной интересной особенности, которая используется в PDO (и не только) - placeholders?


Спасибо, прочитал. Я так понимаю, что prepare использовать лучше чем query?
 
 Top
Deonis
Отправлено: 05 Декабря, 2013 - 17:48:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




cac95 пишет:
prepare использовать лучше чем query?
Желательно. Особенно, если вы используете передаваемые клиентом данные, параметры которых участвуют при выборке из БД, а тем более при записи.
 
 Top
cac95
Отправлено: 05 Декабря, 2013 - 18:47:05
Post Id



Гость


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


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




Deonis пишет:
cac95 пишет:
prepare использовать лучше чем query?
Желательно. Особенно, если вы используете передаваемые клиентом данные, параметры которых участвуют при выборке из БД, а тем более при записи.


Спасибо большое за советы.
Я правильно понял?
PHP:
скопировать код в буфер обмена
  1. $page_db = $db->prepare("SELECT * FROM `page` WHERE `page_id` = :id LIMIT 1");
  2. $page_db->bindParam(':id', $_GET['id']);
  3. $page_db->execute();
  4. $page_db->setFetchMode(PDO::FETCH_ASSOC);
  5. $row = $page_db->fetch();
 
 Top
Deonis
Отправлено: 05 Декабря, 2013 - 20:08:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




cac95 пишет:
Я правильно понял?
В общем и целом - да. Пробегитесь по этой статье. Для начала там достаточно информации для того, чтоб понять "на каком ты свете", а дальше мануалы ))
 
 Top
LIME
Отправлено: 05 Декабря, 2013 - 20:09:38
Post Id


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


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


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




Deonis пишет:
об одной интересной особенности, которая используется в PDO (и не только) - placeholders?
этот подход интересен тем что гарантирует отсутствие инъекций
но при этом дублирует единичный запрос
его стоит применять "чтоб не забыть и не запутаться"
а если ты не применяешь gpc данные напрямую принципиально(что многие IDE даже подчеркивают)
то вполне можно использовать фильтрацию данных в своем классе или тупо real escape string + (int)...по ситуации
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB