我一直在关注这三个数据库库,我想知道他们是否做了什么来阻止SQL注入。我很可能会在其中一个上面构建一个lib,而注入是我在选择一个时最关注的问题。有人知道吗?
答案 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注入,并且只有在对它们进行清理后才将其传递给库。