2011-04-29 5 views
4

일부 사용자 입력을 받아 몇 가지 데이터베이스 쿼리를 수행하는 C 응용 프로그램을 작성했습니다. 나는 SQL injection의 위험성을 잘 알고 있으며 그것을 막고 싶다.C에서 SQL 삽입 방지

필자는 매개 변수화 된 쿼리를 사용하는 것이 이상적이지만 지금까지 C에서이 기능을 사용하여 아무것도 찾을 수 없었습니다. 현재 내 검색어를 작성 중입니다.

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

내가 할 수없는 경우 사용자 입력을 필터링해야합니다. 이 필터링은 어떻게해야합니까? 그렇다면 C에서이 작업을 수행하는 가장 쉬운 방법은 무엇입니까?

답변

7

나는 준비된 명령문과 매개 변수를 사용하고자한다고 믿습니다. 바인딩. 사용자 데이터를 직접 쿼리에 삽입하지 마십시오. 이에 대한 자세한 내용은

+0

감사합니다. 내가 원했던 것입니다. C 라이브러리를 사용하여이를 수행하는 방법을 찾지 못했습니다. – DanielGibbs

+3

[mysql_stmt_bind_param()] (http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-bind-param.html)을 사용해야합니다. –