Я смотрел на все три из этих библиотек базы данных, и я задаюсь вопросом, делают ли они что-нибудь для предотвращения Внедрения SQL. Я, скорее всего, собираюсь быть созданием lib сверху одного из них, и инжекция является главным беспокойством, которое я имею в выборе того. Кто-либо знает?
Получил с автором библиотеки OTL. Параметризованный запрос, написанный на «диалекте OTL», как я его называю, будет передан базовым API БД как параметризованный запрос. Таким образом, параметризованные запросы будут настолько же безопасными для инъекций, насколько их делают базовые API.
Перейдите на этот другой пост SO, чтобы получить полное объяснение по электронной почте: Использует ли библиотека базы данных C ++ OTL SQL параметризованные запросы под капотом или конкатенацию строк?
Изменить: SOCI использует выражение soci :: use
, которое переводится в обычный механизм привязки, но с подробнее синтаксический сахар . Пример: db_session << "вставить в значения таблицы (столбца) (: value_placeholder)", использовать (user_input, "value_placeholder");
Что касается DTL, я не уверен, что он делает с параметры по отношению к базовым API.
Обычно библиотека на этом уровне должна просто делать то, что вы ей говорите. В наибольшей степени вы предотвращаете внедрение SQL, просматривая строки, предоставленные пользователем, и передавая их в библиотеку только после того, как вы их продезинфицируете.