2011-04-29 44 views
4

我正在编写一个C应用程序,它需要一些用户输入并执行一些数据库查询。我很清楚SQL注入的风险,并希望阻止它。阻止SQL注入C

理想情况下,我会使用参数化查询,但到目前为止还无法在C中使用此功能找到任何东西。我目前正在构建我的查询,因此:

char *query; 
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput); 

如果我无法做到这一点,那么我必须过滤用户输入。该过滤应该如何完成?是否足以删除所有的和s?(有效的输入不能包含它们)如果是这样,在C中做这个最简单的方法是什么?

回答

7

我相信你想使用预处理语句和参数不要直接插入用户数据到你的查询中

+0

谢谢,这就是我想要做的,我只是无法找到一种使用C库的方式 – DanielGibbs 2011-04-29 03:02:53

+3

你需要使用[mysql_stmt_bind_param()](http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-bind-param.html) – 2011-04-29 03:06:26