Escape-Sonderzeichen in unescaped_string unter Berücksichtigung der Verbindungseinstellungen des aktuellen Zeichens, damit es in mysql_query() sicher an seinem Platz ist. Sollen Binärdaten eingefügt werden, muss diese Funktion verwendet werden
Die folgenden Zeichen sind betroffen:
Bei Erfolg gibt die Funktion die maskierte Zeichenfolge zurück. Wenn dies fehlschlägt, wird „false“ zurückgegeben.
mysql_real_escape_string(string,connection)
参数 | 描述 |
---|---|
string | 必需。规定要转义的字符串。 |
connection | 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。 |
Beschreibung
Diese Funktion maskiert Sonderzeichen in einer Zeichenfolge und berücksichtigt den aktuellen Zeichensatz der Verbindung, sodass die Verwendung mit mysql_query() sicher ist.
Tipps und Hinweise
Tipp: Mit dieser Funktion können Sie Datenbankangriffe verhindern.
Beispiel
Beispiel 1
// Code zum Abrufen von Benutzername und Passwort
// Escape-Benutzername und Passwort zur Verwendung in SQL
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);
$sql = "SELECT * FROM users WHERE
user='"
mysql_close($con);
?>
Datenbankangriff. Dieses Beispiel zeigt, was passiert, wenn wir die Funktion mysql_real_escape_string() nicht auf den Benutzernamen und das Passwort anwenden:
WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);
// Kann alles sein, was vom Benutzer eingegeben wurde, wie zum Beispiel:
$_POST['user'] = 'john';
$_POST['pwd '] = "' ODER ''='";
mysql_close($con);
?>
SELECT * FROM users
WHERE user='john' AND password='' OR ''='' Dies bedeutet, dass sich jeder Benutzer anmelden kann, ohne ein gültiges Passwort einzugeben.
Richtiger Weg, Datenbankangriffe zu verhindern:
if (!$con)
{
die('Verbindung konnte nicht hergestellt werden: ' . mysql_error()) ;
}
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = " SELECT * VON Benutzern WHERE
user=$user AND password=$pwd";
mysql_close($con);
?>