国内の多くの PHP プログラマーは SQL インジェクションを防ぐために依然として addslashes に依存していますが、中国語での SQL インジェクションを防ぐために全員がチェックを強化することをお勧めします。 addslashes の問題は、ハッカーが単一引用符の代わりに 0xbf27 を使用できることですが、addslashes は 0xbf27 を 0xbf5c27 に変更するだけで、有効なマルチバイト文字となる 0xbf5c は依然として単一引用符とみなされ、そのため addslashes は正常にインターセプトできません。
もちろん、addslashes は、マルチバイト文字の処理に使用されます。mysql_real_escape_string を使用します。
SQL インジェクションを防止するには、magic_quotes_gpc をオンにしてください
php.iniにmagic_quotes_gpc = Offという設定があります
これはデフォルトではオフになっています。オンになっている場合、ユーザーが送信した SQL クエリが自動的に変換されます
たとえば、「 」を「 」などに変換することは、SQL インジェクションを防ぐ上で重要な役割を果たします。
magic_quotes_gpc=Off の場合、addslashes() 関数を使用します
さらに、PHP マニュアルの get_magic_quotes_gpc の例:
コードは次のとおりです | コードをコピー |
if (!get_magic_quotes_gpc()) { $lastname =addslashes($_POST[‘lastname’]); } 他 { $lastname = $_POST[‘lastname’]; } |
magic_quotes_gpc がすでに開いているときに $_POST['lastname'] を確認するのが最善です。
2 つの関数 mysql_real_escape_string と mysql_escape_string の違いについて話しましょう:
mysql_real_escape_string は (PHP 4 >= 4.3.0、PHP 5) でのみ使用できます。それ以外の場合は、mysql_escape_string のみを使用できます。この 2 つの違いは、mysql_real_escape_string は接続の現在の文字セットを考慮するのに対し、mysql_escape_string は考慮しないことです。
(1) mysql_real_escape_string -- 接続の現在の文字セットを考慮して、SQL ステートメントで使用される文字列内の特殊文字をエスケープします
使用方法は次のとおりです:
コードは次のとおりです | コードをコピー |
$sql = "username02.='".mysql_real_escape_string($username)."' および 03.password='" のユーザーから ctr として count(*) を選択します。mysql_real_escape_string($pw)."' 制限 1"; |
カスタム機能
コードは次のとおりです | コードをコピー |
| * mysql_real_escape_string() は文字セットを決定しますが、PHP バージョンの要件があります;
。
http://www.bkjia.com/PHPjc/629626.html