Erfahren Sie die wichtigsten Unterschiede zwischen `mysql_real_escape_string` und `addslashes` in PHP, mit Fokus auf deren spezifische Funktionen und Einsatz in Datenbankabfragen.
---
Dieses Video basiert auf der Frage https://stackoverflow.com/q/91216/ gestellt von dem Nutzer 'Kemal' ( https://stackoverflow.com/u/7506/ ) sowie auf der Antwort https://stackoverflow.com/a/91255/ bereitgestellt von dem Nutzer 'Mark Embling' ( https://stackoverflow.com/u/6844/ ) auf der Website 'Stack Overflow'. Vielen Dank an diese großartigen Nutzer und die Stackexchange-Community für ihre Beiträge.
Besuchen Sie diese Links, um den Originalinhalt und weitere Details zu sehen, z. B. alternative Lösungen, aktuelle Entwicklungen zum Thema, Kommentare, Versionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: What is the difference between mysql_real_escape_string and addslashes?
Außerdem steht der Inhalt (außer Musik) unter der Lizenz CC BY-SA https://meta.stackexchange.com/help/l...
Der ursprüngliche Fragenbeitrag steht unter der Lizenz 'CC BY-SA 2.5' ( https://creativecommons.org/licenses/... ), und der ursprüngliche Antwortbeitrag steht unter der Lizenz 'CC BY-SA 2.5' ( https://creativecommons.org/licenses/... ).
Falls Ihnen irgendetwas auffällt oder Unstimmigkeiten bestehen, schreiben Sie mir bitte an vlogize [AT] gmail [DOT] com.
---
Verstehen des Unterschieds zwischen mysql_real_escape_string und addslashes in PHP
Beim Arbeiten mit Datenbanken in PHP ist eine der wichtigsten Aufgaben, sicherzustellen, dass Daten korrekt escaped werden, um SQL-Injection-Angriffe zu verhindern. Aus diesem Grund stellen sich Entwickler häufig die Frage: Was ist der Unterschied zwischen mysql_real_escape_string und addslashes? Diese Frage ist besonders wichtig für diejenigen, die ihre Datenbank-Interaktionen effektiv absichern möchten.
Einführung in Escape-Funktionen
Sowohl mysql_real_escape_string als auch addslashes haben das Hauptziel, potenziell problematische Zeichen in Strings zu escapen, bevor sie in SQL-Abfragen verwendet werden. Sie funktionieren jedoch unterschiedlich und sind für verschiedene Anwendungsbereiche geeignet. Das Verständnis dieser Unterschiede hilft dabei, sie korrekt und sicher im Code einzusetzen.
Was ist mysql_real_escape_string?
Die Funktion mysql_real_escape_string ist speziell für die Verwendung mit MySQL-Datenbanken konzipiert. So funktioniert sie:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Zweck: Sie escaped Sonderzeichen in einem String, damit diese sicher in einer SQL-Anweisung verwendet werden können.
Zeichenbehandlung: Ruft die interne MySQL-Bibliotheksfunktion auf, die bestimmten Zeichen Backslashes voranstellt, insbesondere:
\x00 (NULL-Byte)
\n (Neue Zeile)
\r (Wagenrücklauf)
\ (Backslash)
' (Einfaches Anführungszeichen)
" (Doppeltes Anführungszeichen)
\x1a (Ctrl-Z)
Das Ergebnis ist ein String, der sicher in SQL-Abfragen eingebaut werden kann, ohne Syntaxfehler oder SQL-Injection-Risiken zu verursachen.
Was ist addslashes?
Im Gegensatz dazu ist addslashes eine allgemeinere Funktion, die in verschiedenen Kontexten eingesetzt werden kann, nicht nur bei MySQL.
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Zweck: Fügt Backslashes vor Zeichen ein, die in Datensätzen (z.B. bei Datenbanken oder anderen Umgebungen) escaped werden müssen.
Zeichenbehandlung: Escaped die folgenden Zeichen, indem ein Backslash davor eingefügt wird:
' (Einfaches Anführungszeichen)
" (Doppeltes Anführungszeichen)
\ (Backslash)
NUL (NULL-Byte)
Wichtige Unterschiede zwischen beiden
Obwohl beide Funktionen das Ziel haben, Zeichen zu escapen, gibt es einige kritische Unterschiede, die Entwickler kennen sollten:
Anwendungsbereich:
mysql_real_escape_string ist explizit für MySQL gedacht, während addslashes universeller ist und in anderen Kontexten angewendet werden kann.
Zeichenbehandlung:
mysql_real_escape_string escaped eine umfassendere Menge an Zeichen, die insbesondere in SQL-Syntax relevant sind, und schützt so effektiver gegen SQL-Injection als addslashes, das sich nur auf wenige Zeichen konzentriert.
Welche Funktion sollte man verwenden?
Aufgrund seiner speziellen Auslegung für MySQL wird generell empfohlen, mysql_real_escape_string einzusetzen, wenn direkt mit einer MySQL-Datenbank gearbeitet wird. Es ist jedoch wichtig anzumerken, dass heutzutage von beiden Funktionen eher abgeraten wird zugunsten der Verwendung von parametrisierten Abfragen und PDO/mysqli, da diese Escaping umfassender und sicherer handhaben.
Fazit
Zusammenfassend lässt sich sagen, dass sowohl mysql_real_escape_string als auch addslashes zum Escapen von Daten für Datenbankabfragen verwendet werden können, ihre Anwendung und Wirkung jedoch unterschiedlich sind. Die Nutzung von mysql_real_escape_string ist in der Regel die sicherere Wahl bei direkter Arbeit mit MySQL-Datenbanken. Es empfiehlt sich jedoch generell, moderne Techniken wie vorbereitete Anw
Информация по комментариям в разработке