防止在C ++ OTL,DTL或SOCI库中进行SQL注入

时间:2010-06-25 14:11:10

标签: c++ database sql-injection soci otl

我一直在关注这三个数据库库,我想知道他们是否做了什么来阻止SQL注入。我很可能会在其中一个上面构建一个lib,而注入是我在选择一个时最关注的问题。有人知道吗?

2 个答案:

答案 0 :(得分:5)

获得了OTL库的作者。用“OTL方言”编写的参数化查询,当我调用它时,作为参数化查询传递给底层数据库API。因此,参数化查询将像底层API一样注入安全。

转到this其他SO帖子以获取完整的电子邮件说明: Is C++ OTL SQL database library using parameterized queries under the hood, or string concat?

编辑:SOCI使用soci::use表达式,它转换为通常的绑定机制,但具有更多语法糖。示例:db_session << "insert into table(column) values(:value_placeholder)", use(user_input,"value_placeholder");

就DTL而言,我不确定它对底层API的参数是做什么的。

答案 1 :(得分:1)

一般来说,这个级别的图书馆应该按你所说的去做。您最常通过查看用户提供的字符串来防止SQL注入,并且只有在对它们进行清理后才将其传递给库。