を使用してクエリを連結してmysql_real_escape_string
も、SQL インジェクション攻撃から (完全に) 保護されないと述べている人が何人かいます。
mysql_real_escape_string
しかし、あなたを保護しない攻撃を示す入力の例はまだ見ていません。mysql_query
ほとんどの例では、 が 1 つのクエリに限定されていることを忘れており、mysql_real_escape_string
間違って使用しています。
私が考えることができる唯一の例は次のとおりです。
mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));
これは、次の入力からあなたを保護しません:
5 OR 1=1
mysql_real_escape_string
これは、数値ではなく文字列用に設計されているため、欠点ではなく誤った使用法だと思います。数値型にキャストするか、サニタイズ時に入力を文字列として扱う場合は、クエリで同じことを行い、引用符で囲む必要があります。
mysql_real_escape_string
数値の誤った処理に依存しない、またはmysql_query
1 つのクエリしか実行できないことを忘れないで回避できる入力の例を誰かが提供できますか?
編集:私は制限に興味があり、mysql_real_escape_string
代替案と比較するのではなく、新しいプロジェクトにはより良いオプションがあることを認識しており、それに異議を唱えていません.