可能性の重複:
What does mysql_real_escape_string() do that addslashes() doesn't?addslashes(string)だけでSQLインジェクションを防止できますか?
ない場合は、私がmysql_escape_stringを使用している、そしてそれは\ r \ nのような言葉に文字を追加し、私はそれを望んでいません..
可能性の重複:
What does mysql_real_escape_string() do that addslashes() doesn't?addslashes(string)だけでSQLインジェクションを防止できますか?
ない場合は、私がmysql_escape_stringを使用している、そしてそれは\ r \ nのような言葉に文字を追加し、私はそれを望んでいません..
いいえ、安全ではありません。代わりにmysql_real_escape_string()
を使用してください。それは、文字列をエスケープするのに必要な以上に何かを加えてはいけません。
http://php.net/mysql-real-escape-string
これは、あまりにも他のデータベースに適用されます:拡張固有のエスケープ関数を使用します。
なぜそれは安全ではありませんか? –
@MichaelTontchevこれは、引用符だけでなく、すべてが適切な方法でSQL文字列のためにエスケープされるようにします。ここで良い説明があります:http://stackoverflow.com/questions/3473047 – Jonah
いいえ、addslashes
は十分ではありません。 mysql_escape_string
は必ずしも十分ではありません。 mysql_real_escape_string
を使用してください。
追加したものが好きかどうかは関係ありませんが、クエリ構文が有効であることを確認するために文字をエスケープするだけです。これがあなたがやっていることのやり方になれば、あなたは何か間違ったことをしているのです。
また、mysqli関数とPrepared Statementsを使用することもできます。これは、すべての引用がデータの一部とみなされるため、最初は問題を回避します。
mysql_real_escape_stringは最終データに何も追加しません。それが起こった場合は、別の質問をしてください。他に何か起こっている可能性があります –
mysql_real_escape_string()に問題がある場合は、Magic Quotesがオフになっていることを確認してください。 – keithjgrant
どうすればいいですか? – Seth