mysql_real_escape_string
Maskiert spezielle Zeichen innerhalb einer Zeichenkette für die Verwendung
in einer SQL-Anweisung
&mysql.alternative.note;
mysqli_real_escape_stringPDO::quote
&reftitle.description;
stringmysql_real_escape_stringstringunescaped_stringresourcelink_identifierNULL
Maskiert spezielle Zeichen in unescaped_string unter
Berücksichtigung des aktuellen Zeichensatzes der Verbindung, so dass das
Ergebnis ohne Probleme in mysql_query verwendet werden
kann. Wenn Sie Binärdaten einfügen wollen, müssen Sie die Funktion auf
jeden Fall verwenden.
mysql_real_escape_string ruft die Funktion
mysql_real_escape_string der MySQL-Bibliothek auf, die folgende Zeichen mit
einem Backslash ('\') versieht: \x00,
\n, \r, \,
', " und \x1a.
Die Funktion muss (mit wenigen Ausnahmen) immer verwendet werden, um Daten
abzusichern, bevor sie per Abrage an MySQL übermittelt werden.
Sicherheit: Der Standardzeichensatz
Der Zeichensatz muss entweder auf Ebene des Servers oder mittels der
API-Funktion mysql_set_charset gesetzt werden, damit
dieser mysql_real_escape_string beeinflusst. Siehe
das Grundlagenkapitel zum Thema Zeichensätze für mehr
Informationen.
&reftitle.parameters;
unescaped_string
Die zu maskierende Zeichenkette.
&mysql.linkid.description;
&reftitle.returnvalues;
Gibt eine maskierte Zeichenkette zurück oder im Fehlerfall &false;.
&reftitle.errors;
Wird diese Funktion ohne MySQL-Verbindung ausgeführt, werden ebenfalls
PHP-Fehler der Stufe E_WARNUNG ausgelöst. Diese
Funktion sollte nur mit einer gültigen MySQL-Verbindung verwendet werden.
&reftitle.examples;
Einfaches mysql_real_escape_string-Beispiel
]]>
mysql_real_escape_string benötigt eine Verbindung
Diese Beispiel verdeutlicht, was geschieht, wenn beim Aufruf dieser
Funktion keine MySQL-Verbindung vorhanden ist.
]]>
&example.outputs.similar;
Ein beispielhafter SQL-Injection-Angriff
]]>
Die Abfrage, die an MySQL übermittelt wird:
Dies würde jedem erlauben, sich ohne valides Passwort einzuloggen.
&reftitle.notes;
Sie müssen eine Verbindung zu MySQL geöffnet haben, bevor Sie
mysql_real_escape_string verwenden, ansonsten
erhalten Sie einen Fehler vom Typ E_WARNING und der
Rückgabewert wird zu &false;. Ist link_identifier
nicht angegeben, wird die letzte MySQL-Verbindung verwendet.
Wenn die Funktion nicht verwendet wird, um die Daten zu maskieren, ist die
Abfrage anfällig für
SQL-Injection-Angriffe.
mysql_real_escape_string maskiert weder
% noch _. Diese Zeichen werden in
MySQL als Platzhalter interpretiert, wenn sie mit LIKE,
GRANT oder REVOKE kombiniert werden.
&reftitle.seealso;
mysql_set_charsetmysql_client_encoding