2011-04-29 65 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