cでのSQL注射の防止
-
27-10-2019 - |
質問
ユーザーの入力を取り、いくつかのデータベースクエリを実行するCアプリケーションを作成しています。ここでSQL注入のリスクをよく知っており、それを防ぎたいと思っています。
理想的には、パラメーター化されたクエリを使用しますが、これまでCでこの機能で何も見つけることができませんでした。私は現在、そのようなクエリを構築しています:
char *query;
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput);
これを行うことができない場合は、ユーザーの入力をフィルタリングする必要があります。このフィルタリングはどのように行う必要がありますか?すべてを削除するだけで十分ですか?(有効な入力はそれらを含めることはできません)。もしそうなら、Cでこれを行う最も簡単な方法は何ですか?
解決
準備されたステートメントとパラメーターバインディングを使用したいと思います。ユーザーデータをクエリに直接挿入しないでください。を参照してください mysqlマニュアル これに関する情報について。
所属していません StackOverflow