1
我必须保护我的软件免受SQL注入。如何使用预准备语句防止C语言中的SQL注入?
这里是我的C代码的例子:
char myquery[QUERY_LEN];
sprintf(myquery, "select * from patient p where p.id_doc='%s'", us_names[index].name);
if (mysql_query(conn, myquery)) {
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}
我想用事先准备好的声明,因为我读的是最好的解决办法,但我不明白它是如何工作的。
我用谷歌,但我没有发现C.
你能不能让我与我的代码示例,任何的例子吗?
你阅读手册? http://dev.mysql.com/doc/refman/5.0/en/c.html(第19.8.4节开始)。 – 2011-12-18 14:33:02
MySQL手册有一个例子:http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-execute.html – pmg 2011-12-18 14:35:57
使用占位符;不要直接在SQL中包含字符串。如果您必须使用适当的功能来转义需要转义的字符。请注意,在C中,您需要关心缓冲区溢出(以及SQL注入)。所以,你应该使用'snprintf()'并且检查结果是否意味着'没有发生溢出'。 – 2011-12-18 17:45:00