在C中防止SQL注入

Dan*_*bbs 4 c mysql sanitization sql-injection parameterized-query

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

理想情况下,我会使用参数化查询,但到目前为止无法在C中找到任何具有此功能的内容.我目前正在构建我的查询:

char *query;
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput);
Run Code Online (Sandbox Code Playgroud)

如果我无法做到这一点,那么我必须过滤用户输入.该过滤应该如何进行?是否只删除所有和's?(有效输入不能包含它们).如果是这样,在C中执行此操作的最简单方法是什么?

Ted*_*opp 7

我相信你想使用预准备语句和参数绑定.不要直接将用户数据插入到查询中.有关此信息,请参阅MySQL手册.

  • 您需要使用[mysql_stmt_bind_param()](http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-bind-param.html) (3认同)