PDO в Codeigniter – Защита от SQL-инъекций

Истинные эксперты в области безопасности PHP, это PDO, или мне было бы хорошо с классом Active Record Codeigniter?

Я прочитал http://codeigniter.com/forums/viewthread/179618/ и не уверен на 100%.
Обычно я склоняюсь к таким экспертам, как Крис Шифлетт и OWASP для советов по безопасности. http://shiflett.org/blog/2006/jul/the-owasp-php-top-5

Использовал собственный класс PDO DBO вместо файлов базы данных Codeigniter. Каждый раз, когда я загружаю его, это относительно небольшая боль, чтобы скопировать. Основной причиной, по которой я использую PDO, является защита от SQL Injection vs с использованием Active Record.

РЕДАКТИРОВАТЬ: НЕ ДОЛЖНО БЫТЬ ПОКУПАТЕЛЕМ, но я написал сообщение после того, как проиндексировать PDO в Codeigniter . Если у кого есть отзывы, я был бы рад услышать.

Согласно ссылке, на которую вы ссылаетесь, класс Active Record использует функции mysql_ для mysql_ строк. Это означает, что он все еще строит SQL-строки в PHP-land вместо использования параметризованных API-интерфейсов в базе данных. Хотя сейчас он может быть свободен от известных дефектов, все же лучше использовать API, который следует за более безопасным дизайном.

Ну, есть общий ответ на все вопросы такого рода:

Это не палочка, это волшебник.

(dunno, где я получил это высказывание, но кажется, что я только один его использую, но, скорее всего, я его набросал)

В самой технологии нет ничего хорошего или плохого.
Все зависит от рук, которые его используют.

  1. В mysql нет ничего небезопасного, если использовать его правильно.
  2. PDO – это не волшебная эгида, которая покрывает ваш отскок от всех опасностей только его присутствием.

Каждый раз, когда я вижу хромые разговоры о внедрении SQL, это всегда касается только динамических данных .
В то время как большая часть опасности исходит от других частей запроса – скажем, динамических идентификаторов. Там, где PDO может сделать немного меньше, чем ничего, чтобы справиться с ними.

Таким образом, не может быть определенного ответа.
Вы можете использовать любую технологию, которая вам нравится, если вы понимаете, что вы делаете.
И наоборот, если вы не понимаете, как это работает, но просто верьте, что некоторые технологии, которые делают вашу работу по защите вашего приложения, у вас уже проблемы.

Вот и все.

Если вы уже в удобной точке с вашей библиотекой PDO, нет причин прекращать ее использование в CI. Активная запись великолепна, если вы хотите следовать шаблонам CI, но это вряд ли является требованием в любом смысле.

Взгляните на http://codeigniter.com/user_guide/database/queries.html.

В последнем разделе «Связывание запросов» вам сообщается, что вы можете использовать привязки запросов, которые автоматически экранируются.

Хотя это не очень подготовленные заявления, это эффективная симуляция.