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以降)。 –
MySQLマニュアルには例があります:http://dev.mysql.com/doc/refman/5.6/en/mysql-stmt-execute.html – pmg
プレースホルダを使用してください。 SQLに直接文字列を含めないでください。必要な場合は、適切な関数を使用してエスケープする必要のある文字をエスケープします。 Cでは、バッファオーバーフロー(SQLインジェクションだけでなく)について心配する必要があることに注意してください。ですから、おそらく 'snprintf()'を使って、結果が 'オーバーフローが発生していません'ということを確認する必要があります。 –