1

重複の可能性:
PHP で SQL インジェクションを防止する最善の方法

で引用符をエスケープしますaddslashes($str)

テキスト フィールドから MySQL データベースに入力を保存すると、MySQL インジェクションに対する十分な保護になりますか、それとも、このエスケープ メソッドをバイパスできるため、入力をさらにフィルタリングする必要がありますか? または、これを行うより良い方法はありますか?

4

5 に答える 5

2

PDO の準備済みステートメントについて読む必要があります: http://www.php.net/manual/en/pdo.prepared-statements.php

于 2012-07-18T18:34:24.690 に答える
1

引用符をエスケープするだけでは間違いなく十分ではありません。最も安全な方法は、パラメータバインディングを使用することです。mysqli_stmt::bind_paramのドキュメントを参照してください。

于 2012-07-18T18:35:36.320 に答える
0

はいあります。期待値に応じて、次のいずれかのすべてのパラメーターを確認できます。

  • 変数の値は何か意味がありますか?
  • 変数の値は妥当な値の範囲内ですか?
  • 変数の値は事前定義された最大長の範囲内ですか?

これらはあなたに多くのトラブルを救うことができるいくつかの基本的なチェックです。また、より多くの問題を回避するために:

  • 常にファイルのアップロードをフィルタリングし、アップロードされたものを実行しないでください。
  • SQLを実行したり、ユーザー入力の直接部分を持つコードを評価したりしないでください。常に最初に入力を解析して、異常が含まれていないことを確認してください。
于 2012-07-18T18:39:23.940 に答える
-1

mysql_real_escape_stringまたは同様の関数を使用することをお勧めします(使用しているDBアクセス方法によって異なります)。

于 2012-07-18T18:35:42.640 に答える
-1

次のようにexcapingを行うことができます:

<?php  
    $query = mysql_query("SELECT id FROM users WHERE username =   '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");  
?>  
于 2012-07-18T18:34:55.860 に答える