Друпал 7 защита от sql инъекций?

Главные вкладки

Аватар пользователя haver haver 17 сентября 2012 в 14:38

Здравствуйте!
Я в этом вопросе менее чем новичок.И мало чего понимаю.
Просто хотелось понять чтобы спать спокойно.
Если кто то может объяснить как в d7 database api реализована защита от
sql инъекций?
Например имею запрос сохраняющий текстовые данные поля из формы:

<?phpdb_insert('mytable')
  ->fields(array(
    'myfield' => $form_state['values']['myfield'],
 ))
  ->execute(); ?>

вставляю в поле "te'st" и вижу в базе в точности то же самое "te'st".

Должно ли оно делать что нибудь с этим типа "te'/st"? Или что то другое?
И все ли нормально? Я в этом слабо разбираюсь, может быть оно экранирует , но я этого просто не понимаю?
Может быть ошибки в моем коде?
В 6 использовалась параметризация в запрос вместо значения подставлялись подставлялись:
# %d — для целых чисел (integers)
# %s — для строк

А для 7 написано, что этого делать уже не нужно, что все типа уже включео в api?
Хочется верить, что заоблачные гуру (разработчики api) уже все за тебя предусмотрели и над этим парится не нужно.
Однако хотелось понять как это работает? Есть ли защита от инъекций?

Комментарии

Аватар пользователя Chyvakoff Chyvakoff 17 сентября 2012 в 17:39

В семерке всё работает на основе PDO.
Так что можешь смело подставлять в запрос хоть $_GET['ololo'] - ничего не случится. Точнее SQL инъекция не произойдёт, разве что логические ошибки в дальнейшей работе скрипта.