重複の可能性:
PHP で SQL インジェクションを防止する最善の方法
で引用符をエスケープしますaddslashes($str)
。
テキスト フィールドから MySQL データベースに入力を保存すると、MySQL インジェクションに対する十分な保護になりますか、それとも、このエスケープ メソッドをバイパスできるため、入力をさらにフィルタリングする必要がありますか? または、これを行うより良い方法はありますか?
PDO の準備済みステートメントについて読む必要があります: http://www.php.net/manual/en/pdo.prepared-statements.php
引用符をエスケープするだけでは間違いなく十分ではありません。最も安全な方法は、パラメータバインディングを使用することです。mysqli_stmt::bind_paramのドキュメントを参照してください。
はいあります。期待値に応じて、次のいずれかのすべてのパラメーターを確認できます。
これらはあなたに多くのトラブルを救うことができるいくつかの基本的なチェックです。また、より多くの問題を回避するために:
mysql_real_escape_stringまたは同様の関数を使用することをお勧めします(使用しているDBアクセス方法によって異なります)。
次のようにexcapingを行うことができます:
<?php
$query = mysql_query("SELECT id FROM users WHERE username = '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");
?>