2016-01-09 3 views
0

Я использую FluentPDO для обработки запросов к базе данных. При взгляде на его код он, похоже, не использует какие-либо формы экранирования. Я понимаю, что PDO решает много проблем безопасности самостоятельно, но это не застраховано от них.Как справиться с проблемами безопасности с FluentPDO в PHP?

Как я понимаю, он невосприимчив к инъекции SQL, пока мы используем подготовленные синтаксические признаки на это сайт:

$query = $fpdo->from('article') 
     ->where('published_at > ?', $date) // HERE!! 
     ->orderBy('published_at DESC') 
     ->limit(5); 

Как о побеге переменных, чтобы предотвратить вторую инъекцию порядка SQL? Было бы просто использовать addslashes()? Было бы лишним? Как обращаться с безопасностью в этой библиотеке?

Спасибо!

+0

Если библиотека использует подготовленный оператор и привязывает параметры. Это должно быть хорошо. – frz3993

+0

Не следует различать, откуда поступают данные; просто передайте его как параметр, и все в порядке. – Gumbo

+0

Извините @ Gumbo, не могли бы вы объяснить это дальше? – fgarci03

ответ

0

О санитарной обработке, read more.

Некоторые хорошие цитаты:

Не пытайтесь предотвратить инъекции SQL с помощью дезинфицирующего входных данных.

Вместо этого не допускайте использования данных при создании кода SQL. Используйте подготовленные выражения (т. Е. Используя параметры в запросе шаблона), который использует связанные переменные. Это единственный способ гарантировать от SQL-инъекции.

или (подробнее о validating filters)

PHP имеет новые интересные функции filter_input сейчас, что, например, освободить вас от поиска «конечной электронной почты регулярное выражение» теперь есть встроенная в FILTER_VALIDATE_EMAIL тип

+0

Обратите внимание, что проверка (как указано с помощью 'FILTER_VALIDATE_EMAIL') не делает надлежащую обработку данных (например, параметризацию, используемую подготовленными инструкциями) устаревшей. См. [Does FILTER_VALIDATE_EMAIL сделать строку безопасной для вставки в базу данных?] (Http://stackoverflow.com/q/4154685/53114) и [Является ли FILTER_VALIDATE_EMAIL достаточным для остановки инъекции оболочки?] (Http://stackoverflow.com/a/30816794/53114) для подробных образцов. – Gumbo

Смежные вопросы