Достаточно ли библиотеки базы данных CodeIgnighter для предотвращения инъекций Sql - PullRequest
1 голос
/ 12 августа 2011

Я пытаюсь написать модели в codeignighter, например здесь , который опирается на API базы данных CodeIgnighter.Я прочитал сообщение на форуме о том, полностью ли API базы данных CodeIgnighter предотвращает SQL-инъекции.Я знаю, что многие люди предлагают , используя PDO Framework , как лучший способ предотвращения SQL-инъекций.Я знаю, как использовать каркас PDO, но не понимаю, как использовать подготовленные операторы для генерации запросов в моделях.Я спасаюсь от SQL-инъекций, используя API базы данных CodeIgnighter, или мне следует использовать PDO Framework?

Ответы [ 3 ]

3 голосов
/ 12 августа 2011

Не могу много сказать о CodeIgniter, но в качестве примера буду использовать Doctrine.Скажем, вы хотите получить пользователя из базы данных.Вы можете добавить условие к запросу:

    // Correct usage. $user value will be passed as bound parameter to PDO
    $query->where('u.username = ?', $user);

Или ..

    // Works fine but should not be used like this and can be exploited if $user was not sanitized/escaped
    $query->where("u.username = '$user' ");

То же относится и к обычному PDO.

Поэтому ответ таков: это может помочь вам,но вы все равно должны прочитать документацию и следовать инструкциям.

3 голосов
/ 12 августа 2011

Если вы используете встроенные функции воспламенителей кода, с вами все будет в порядке.

Вот ссылка на stackoverflow, которая объясняет это подробнее: Вопрос StackOverflow,

Используйте параметризованные запросы и следуйте примерам, приведенным в приведенном выше вопросе SO, и вы будете в безопасности от внедрения SQL-кода. Ничего другого вы не сможете сделать сами, просто напишите хороший код, следуя рекомендациям CI и используя все встроенные функции.

2 голосов
/ 12 августа 2011

Библиотеки CI являются такой же хорошей защитой от внедрения SQL, как и mysql_real_escape_string (или любой другой предпочитаемый вами драйвер). Почему это? потому что их библиотека БД вызывает это на всех входах. Он также правильно экранирует все имена таблиц и столбцов. Кроме того, использование PDO означает, что вам нужно каким-то образом использовать переписывание синтаксиса Active Record CI.

Тем не менее, есть много преимуществ для PDO. Я просто не думаю, что безопасность практически одна из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...