Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как фильтровать переменные при работе с PDO
 
 автор: Visavi   (16.08.2009 в 16:51)   письмо автору
 
 

Подскажите достаточно ли такого

небольшой пример
<?php
$dbr 
Database::$content->prepare("INSERT INTO guest (name,value, time) VALUES (:name, :value, :time)");
$dbr->bindParam(':name'$_POST['name'], PDO::PARAM_STR);
$dbr->bindParam(':value'$_POST['value'], PDO::PARAM_STR);
$dbr->bindParam(':time'time(), PDO::PARAM_INT);
$dbr->execute();


защищает ли такой код от sql-инъекции, от битых данных при работе с sqlite, чтобы не повредить базу

и второй вопрос как место time() поставить значение константы, а то выдает ошибку

  Ответить  
 
 автор: Trianon   (16.08.2009 в 17:16)   письмо автору
 
   для: Visavi   (16.08.2009 в 16:51)
 

Любой bind-метод (не только в pdo - в MySQLi, MSSQL, ORACLE, PGSQL - вообще где угодно) своей основной задачей ставит внедрение значения переменной в тело запроса в качестве параметра.
Следовательно, никакие инъекции через bind невозможны в принципе.

привязать к запросу можно только переменную.
Что не мешает ей присвоить значение функции.

  Ответить  
 
 автор: Visavi   (16.08.2009 в 18:30)   письмо автору
 
   для: Trianon   (16.08.2009 в 17:16)
 

но ведь к примеру sqlite_escape_string() например как-то обрабатывает одинарные ковычки и двоично-небезопасные символы которые могут повредить базу, так написано http://ru.php.net/sqlite_escape_string

можно ли быть увереным что через bind все будет в порядке, вот именно эти "двоично-небезопасные символы " меня беспокоят

  Ответить  
 
 автор: Trianon   (16.08.2009 в 18:32)   письмо автору
 
   для: Visavi   (16.08.2009 в 18:30)
 

>но ведь к примеру sqlite_escape_string() например как-то обрабатывает одинарные ковычки и двоично-небезопасные символы которые могут повредить базу, так написано http://ru.php.net/sqlite_escape_string

где там хоть слово про bind?

  Ответить  
 
 автор: Visavi   (16.08.2009 в 18:56)   письмо автору
 
   для: Trianon   (16.08.2009 в 18:32)
 

я спрашиваю будет ли достаточно переменные обработать через bind, чтобы быть уверенным что с базой sqlite все будет в порядке

  Ответить  
 
 автор: Trianon   (16.08.2009 в 20:45)   письмо автору
 
   для: Visavi   (16.08.2009 в 18:56)
 

>я спрашиваю будет ли достаточно переменные обработать через bind, чтобы быть уверенным что с базой sqlite все будет в порядке

Конечно, недостаточно.
К примеру, запрос DROP TABLE может уничтожить таблицу безо всякой передачи параметров.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования