Предотвращение внедрения SQL в библиотеки C ++ OTL, DTL или SOCI - PullRequest
6 голосов
/ 25 июня 2010

Я просматривал все три из этих библиотек баз данных, и мне интересно, делают ли они что-нибудь, чтобы предотвратить инъекцию SQL.Скорее всего, я собираюсь создать библиотеку поверх одного из них, и инъекция - главная проблема, которую я имею при выборе.Кто-нибудь знает?

Ответы [ 2 ]

5 голосов
/ 30 июня 2010

Получил с автором библиотеки OTL. Параметризованный запрос, написанный на «диалекте OTL», как я его называю, будет передаваться базовым API БД как параметризованный запрос. Таким образом, параметризованные запросы будут такими же безопасными для инъекций, как и базовые API.

Перейдите к этому другому ТАКому сообщению для его полного объяснения по электронной почте: Является ли библиотека базы данных SQL C ++ OTL с помощью параметризованных запросов скрытой или строковой конкататикой?

Редактировать: SOCI использует выражение soci::use, которое переводится в обычный механизм связывания, но с большим количеством синтаксического сахара . Пример: db_session << "insert into table(column) values(:value_placeholder)", use(user_input,"value_placeholder");

Что касается DTL, я не уверен, что он делает с параметрами по отношению к базовым API.

1 голос
/ 25 июня 2010

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

...