SQLインジェクションを防ぐには、PHPでaddslashes関数を使用します。 国内の多くの PHP プログラマーは SQL インジェクションを防ぐために依然として addslashes に依存していますが、中国語での SQL インジェクションを防ぐために全員がチェックを強化することをお勧めします。 addslashes の問題は、ハッカーが 0xbf27 を使用して一重引用符を置き換えることができるのに対し、addslashes は 0xbf27 を 0xbf5c27 に変更するだけで、有効なマルチバイト文字とみなされるため、addslashes は正常にインターセプトできないことです。 もちろん、addslashes は、マルチバイト文字の処理に使用されます。mysql_real_escape_string を使用します。 また、PHP マニュアルの get_magic_quotes_gpc 関数の使用方法については、次の例をご覧ください。 例:
この関数は、unescaped_string 内の特殊文字をエスケープし、接続の現在の文字セットを考慮するため、mysql_query() で安全に使用できます。 注意: mysql_real_escape_string() は % と _ をエスケープしません。 mysql_real_escape_string 例 1、mysql_real_escape_string() の例
mysql_escape_string この関数は unescaped_string をエスケープするため、mysql_query() で安全に使用できます。 注: mysql_escape_string() は % と _ をエスケープしません。 この関数は、mysql_real_escape_string() とまったく同じですが、mysql_real_escape_string() が接続ハンドルを受け入れ、現在の文字セットに従って文字列を転送する点が異なります。 mysql_escape_string() は接続パラメータを受け入れず、現在の文字セット設定を気にしません。 例 1. mysql_escape_string() の例
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 は考慮しないことです。 判定により総合的な処理が可能です。 例: function cleanuserinput($dirty){
概要:
* addslashes() が強制的に追加されます。
* mysql_real_escape_string() は文字セットを決定しますが、PHP バージョンの要件があります。
* mysql_escape_string は接続の現在の文字セットを考慮しません。
|