私はいつも他のサニタイズ方法(と準備された文章)を使いたいですが、クライアントが元のスクリプトから1行を変更したくない特定の条件の下にあります(プラグインを追加するだけです)mysql query + sprintf = injection?
イムは、誰かが$ POST値を変更することで、これを悪用する可能性がありますし、(クライアントが通常行うように)、彼は私を責め可能性が心配:
extract($_POST, EXTR_PREFIX_ALL, "POST");
$q = sprintf(ARQ, trim($POST_string));
$res = doexec($q);
DEFINE("ARQ", "INSERT INTO library (string) VALUES ('%s')");
私はいくつかの組み合わせを試してみましたが、私は得ることができ、すべてがエラーだった、何のmysqlので を注入していませんこれは十分安全ですか?
全く安全ではありません。 '%s'はデータをエスケープしません。それはちょうどそれの場所に置かれる文字列を必要とします。クエリに入れる前に、 'PDO' /' mysqli'を見て、準備された文を使うか、値に 'mysql_real_escape_string'を使う必要があります。 –
あなたは[mysql_queryのドキュメントのsprintfの例](http://php.net/manual/en/function.mysql-query.php)を見たことがありますか?あなたが掲示したものよりずっと簡単で、注入安全です。 –