php addslashesとmysql_real_escape_string

1092 ワード

addslashesとmysql_についてよく説明しましたreal_escape_stringの違いは、国内の多くのPHPコードはaddslashesに頼ってSQL注入を防止しているが(私も含めて)SQL注入防止のための中国語のチェックを強化することをお勧めします.addslashesの問題は、ハッカーが単一引用符の代わりに0 xbf 27を使用できることですが、addslashesは0 xbf 27を0 xbf 5 c 27に変更するだけで、有効なマルチバイト文字になります.0 xbf 5 cは単一引用符と見なされるため、addslashesはブロックできません.
もちろんaddslashesも役に立たないわけではありませんが、単一バイト文字列の処理に使用されます.マルチバイト文字かmysql_を使用します.real_escape_stringでしょう.
またphpマニュアルでget_magic_quotes_gpcの例:
 
  
if (!get_magic_quotes_gpc()) {
$lastname = addslashes($_POST[‘lastname']);
} else {
$lastname = $_POST[‘lastname'];
}

magic_quotes_gpcがオープンした場合、やはり$POST['lastname']でチェックしてみます.
あとmysql_real_escape_stringとmysql_escape_stringの2つの関数の違い:
mysql_real_escape_stringは、(PHP 4>=4.3.0、PHP 5)の場合に使用する必要があります.そうでなければmysql_しか使えませんescape_string、両者の違いは:
mysql_real_escape_stringは接続の現在の文字セットを考慮し、mysql_escape_stringは考えない.
まとめてみます.
addslashes()は強引に加算されます.
mysql_real_escape_string()は文字セットを判断しますが、PHPバージョンには要求があります.
mysql_escape_stringは、接続の現在の文字セットを考慮しません.