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