[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PDO защита от инъекций
svetlyi
Ребяты, будьте добры, объясните, как PDO защищает от sql инъекций. Я понял, что запрос кэшируется на сервере и данные подставляются не напрямую в запрос, однако каким образом это мне мешает добавить в переменную, которая добавляется в запрос, вредоносный код?
VELIK505
Там не надо pdo сам по себе защищает от sql inj.
Допустим когда ты связываешь значение с заполнением.
$per->bindValue(':shet', $shet, PDO::PARAM_STR);

то PDO уже сам позабодиться о избежании sql inj
svetlyi
Так-то оно так, однако тут меня смутила эта фраза:
Цитата
Если в приложении используются исключительно подготовленные запросы, разработчик может быть уверен, что никаких SQL инъекций случиться не может (однако, если другие части текста запроса записаны с неэкранированными символами, SQL инъекции все же возможны; здесь речь идет именно о параметрах)

Получается если у меня $data1 будет с неэкранированными символами, то возможна инъекция? :blink:
$sth=$dbh->prepare("insert into table_name (`data1`, `data2`, `data3`) values (?,?,?)");
$sth->bindParam(1,$data1);
$sth->bindParam(2,$data2);
$sth->bindParam(3,$data3);
$sth->execute();
Michael
нет, если ты все переменные/параметры в запрос "биндишь", то все окей.

_____________
There never was a struggle in the soul of a good man that was not hard
zelenin
а если я вставляю в таком виде:

$query = 'insert `test_table` ( `name`, `data` ) values ( :name, :data )';
$sth = $this->dbh->prepare( $query );
$result = $sth->execute( array ( 'name' => 'John', 'data' => 'doctor' ) );


защита от инъекций происходит или надо биндить как в примере выше?
Michael
тоже происходит.
Смотри - есть твой текст запроса.
Ты его подготавливаешь используя prepare.
До prepare свои же данные какие то ты в текст не совал? Нет.


_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.