4

私は、いくつかのユーザー入力を受け取り、いくつかのデータベースクエリを実行するCアプリケーションを作成しています。私はここでSQLインジェクションのリスクをよく知っており、それを防ぎたいと思っています。

理想的にはパラメータ化されたクエリを使用しますが、これまでのところCでこの機能を備えたものを見つけることができませんでした。私は現在、クエリを次のように作成しています。

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

これができない場合は、ユーザー入力をフィルタリングする必要があります。このフィルタリングはどのように行う必要がありますか?すべての'と"を削除するだけで十分ですか?(有効な入力にそれらを含めることはできません)。そうであれば、Cでこれを行う最も簡単な方法は何ですか?

4

1 に答える 1

7

プリペアドステートメントとパラメータバインディングを使用したいと思います。ユーザーデータをクエリに直接補間しないでください。これに関する情報については、 MySQLのマニュアルを参照してください。

于 2011-04-29T02:55:06.777 に答える