Heim  >  Artikel  >  Backend-Entwicklung  >  Wie wird PHP-Escape implementiert?

Wie wird PHP-Escape implementiert?

PHPz
PHPzOriginal
2023-04-05 14:34:46477Durchsuche

Escape bezieht sich auf die Umwandlung von Sonderzeichen in eine Form, die von der Maschine im Programm erkannt werden kann. In PHP gibt es auch ein solches Escape. PHP-Escape wird durch das Einfügen eines Backslashs „“ vor dem Zeichen erreicht. Um beispielsweise doppelte Anführungszeichen (") zu umgehen, können Sie Folgendes schreiben:

echo "She said \"Hello\"";

Dies wird auf dem Bildschirm ausgegeben: Sie sagte „Hallo“.

In PHP gibt es viele Zeichen, die mit Escapezeichen versehen werden müssen. Nachfolgend sind einige häufig vorkommende Zeichen aufgeführt Zeichen, die maskiert werden müssen, und ihre Escape-Zeichen:

Zeichen, die maskiert werden müssen Escape-Zeichen
Einfache Anführungszeichen '
Doppelte Anführungszeichen "
Backslash
Zeilenumbruch n
Wagenrücklauf r
horizontaler Tabulator t

Wenn nicht , führt dies zu einem Syntaxfehler oder einem Programmfehler.

Bei Verwendung der Datenbank ist auch ein Escape erforderlich. Wenn nicht entkommen wird, können Benutzer schädlichen Code in die Datenbank einfügen, was zu einem Angriff auf das System führt. PHP stellt uns zwei Funktionen zum Escapen zur Verfügung: mysqli_real_escape_string() und addslashes().

Die Funktion mysqli_real_escape_string() ist die von PHP bereitgestellte MySQL-Escape-Funktion. Sie ist gut kompatibel und unterstützt mehrere Zeichensätze. Die Funktion addslashes() ist eine integrierte Funktion von PHP. Die Escape-Zeichen sind festgelegt und unterstützen nur Zeichenfolgen mit dem Zeichensatz ISO-8859-1.

Hier ist ein Beispiel für die Verwendung der Funktion mysqli_real_escape_string():

$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}

$name = mysqli_real_escape_string($mysqli, $_POST['name']);
$email = mysqli_real_escape_string($mysqli, $_POST['email']);
$message = mysqli_real_escape_string($mysqli, $_POST['message']);

$query = "INSERT INTO messages (name, email, message) VALUES ('$name', '$email', '$message')";

$result = $mysqli->query($query);

if ($result === TRUE) {
    echo "Message sent successfully";
} else {
    echo "Error: " . $mysqli->error;
}

$mysqli->close();

Im obigen Beispiel verwenden wir die Funktion mysqli_real_escape_string(), um den vom Benutzer eingegebenen Namen, die E-Mail-Adresse und die Nachricht zu maskieren, um SQL-Injection-Angriffe zu vermeiden.

Neben MySQL müssen auch andere Datenbanken maskiert werden. Verschiedene Datenbanken verfügen über unterschiedliche Escape-Methoden, und Sie müssen entsprechend der jeweiligen Situation die entsprechende Escape-Funktion auswählen.

Zusammenfassend lässt sich sagen, dass Escape ein wichtiger Bestandteil beim Schreiben sicherer PHP-Programme ist und mit Vorsicht verwendet werden muss. Bei der Ausgabe von Zeichen oder dem Einfügen von Daten in die Datenbank sind Escapezeichen erforderlich. Es wird empfohlen, die Funktion mysqli_real_escape_string() zum Escapen zu verwenden, um fehlende Escape-Zeichen zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie wird PHP-Escape implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn