suchen
HeimDatenbankMySQL-TutorialReichen „mysql_real_escape_string()' und „mysql_escape_string()' aus, um MySQL-Injection-Angriffe zu verhindern?

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Prevent MySQL Injection Attacks?

MySQL-Injection-Angriffe: Ein tieferer Einblick

Einführung

Gewährleistung der Sicherheit von Webanwendungen ist von entscheidender Bedeutung, und der Datenbankschutz ist ein wesentlicher Teil dieser Bemühungen. In diesem Artikel wird die Wirksamkeit der Verwendung von mysql_real_escape_string() und mysql_escape_string() beim Schutz vor SQL-Angriffen untersucht.

Sind Escape-Funktionen ausreichend für die Sicherheit?

mysql_real_escape_string() und mysql_escape_string () werden häufig zum Escapen von Daten vor dem Einfügen verwendet in SQL-Abfragen. Sind diese Funktionen jedoch ausreichender Schutz gegen alle Angriffsvektoren?

Expertenmeinung

Experten zufolge bietet mysql_real_escape_string() keinen vollständigen Schutz vor SQL-Injections. Dies liegt daran, dass es nur dazu gedacht ist, PHP-Variablen innerhalb von Abfragen zu maskieren. Es kann keine Escape-Tabellen- oder Spaltennamen oder LIMIT-Felder verarbeiten.

Anfälligkeit für bekannte Angriffe

Betrachten Sie das folgende Beispiel:

$sql = "SELECT number FROM PhoneNumbers " .
       "WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);

Diese Abfrage ist anfällig für SQL-Injection, wenn das $field oder $value böswillige Eingaben enthält. Ein Hacker könnte eine bösartige Abfrage erstellen, die Escape umgeht und nicht autorisierte Befehle ausführt.

Spezifische Angriffsvektoren

  • LIKE-Angriffe: mysql_real_escape_string( ) ist gegen LIKE-Angriffe wie LIKE „$data%“ unwirksam. Dadurch können alle Datensätze in einer Tabelle offengelegt werden, wodurch möglicherweise vertrauliche Informationen preisgegeben werden.
  • Charset-Exploits: Diese Exploits nutzen Schwachstellen im Internet Explorer und bei der Verarbeitung von PHP-Zeichensätzen aus. Sie können es Hackern ermöglichen, beliebige SQL-Abfragen auszuführen.

Eine Demonstration

Der folgende Code zeigt, wie diese Angriffe ausgenutzt werden können:

$sql = sprintf("SELECT url FROM GrabbedURLs WHERE %s LIKE '%s%%' LIMIT %s",
               mysql_real_escape_string($argv[1]),
               mysql_real_escape_string($argv[2]),
               mysql_real_escape_string($argv[3]));
  • Eingabe 1: Gibt URLs zurück, die mit beginnen „http://www.reddit.com“
  • Eingabe 2: Gibt jedes Ergebnis zurück (ein Exploit)
  • Eingabe 3: Wird unerwartet ausgeführt SQL-Abfragen

Die Lösung: Vorbereitet Anweisungen

Experten empfehlen die Verwendung vorbereiteter Anweisungen anstelle von Escape-Funktionen. Vorbereitete Anweisungen sind serverseitige Techniken, die garantieren, dass nur gültiges SQL ausgeführt wird. Dieser Ansatz bietet umfassenden Schutz vor bekannten und unbekannten SQL-Injections.

Beispiel für die Verwendung von PDO

$sql = 'SELECT url FROM GrabbedURLs WHERE ' . $column . '=? LIMIT ?';
$statement = $pdo->prepare($sql);
$statement->execute(array($value, $limit));

Dieser Code verwendet vorbereitete Anweisungen, um Benutzereingaben zu umgehen und Abfragen auszuführen sicher.

Fazit

Während mysql_real_escape_string() und mysql_escape_string() bieten einen gewissen Schutz vor SQL-Injections, sie reichen jedoch nicht für vollständige Sicherheit aus. Vorbereitete Anweisungen sind der empfohlene Ansatz für eine robuste Datenbanksicherheit.

Das obige ist der detaillierte Inhalt vonReichen „mysql_real_escape_string()' und „mysql_escape_string()' aus, um MySQL-Injection-Angriffe zu verhindern?. 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
MySQL Blob: Gibt es Grenzen?MySQL Blob: Gibt es Grenzen?May 08, 2025 am 12:22 AM

Mysqlblobshavelimits: Tinyblob (255Bytes), Blob (65.535 Bytes), Mediumblob (16.777.215 Bytes), Andlongblob (4,294.967.295 Bytes) .TouseBl Obseffektiv: 1) TipperformanceImpactsandStorElargblobsexternal;

MySQL: Was sind die besten Tools, um die Erstellung von Benutzern zu automatisieren?MySQL: Was sind die besten Tools, um die Erstellung von Benutzern zu automatisieren?May 08, 2025 am 12:22 AM

Zu den besten Tools und Technologien zur Automatisierung der Erstellung von Benutzern in MySQL gehören: 1. MySQLWorkbench, geeignet für kleine bis mittlere Umgebungen, einfach zu bedienen, aber mit hohem Ressourcenverbrauch. 2. Ansible, geeignet für Multi-Server-Umgebungen, einfache, aber steile Lernkurve; 3.. Benutzerdefinierte Python -Skripte, flexibel, müssen aber die Sicherheitskriptsicherheit gewährleisten. 4. Puppen- und Küchenchef, geeignet für groß angelegte Umgebungen, komplex, aber skalierbar. Bei der Auswahl sollten Maßstab, Lernkurve und Integrationsanforderungen berücksichtigt werden.

MySQL: Kann ich in einem Blob suchen?MySQL: Kann ich in einem Blob suchen?May 08, 2025 am 12:20 AM

Ja, youcansearchinSideabloBinMysqlusingSpecifictechniques.1) konvertieren theBloboToAutf-8stringwithConvertfunctionandSearchused-Like.2) ficRpressedblobs, UseUncompressBeForeConversion.3) IncentalanceImpactSandSandDataCoding.4) Forcompomplexdata, ExternalPactsandDataCoding.4) Forcompomplexdata, ExternalPactsandDataCoding.4) Forcompomplexdata, ExternalPracing.

MySQL -String -Datentypen: Eine umfassende AnleitungMySQL -String -Datentypen: Eine umfassende AnleitungMay 08, 2025 am 12:14 AM

MySQLoffersvariousstringdatatypes:1)CHARforfixed-lengthstrings,idealforconsistentlengthdatalikecountrycodes;2)VARCHARforvariable-lengthstrings,suitableforfieldslikenames;3)TEXTtypesforlargertext,goodforblogpostsbutcanimpactperformance;4)BINARYandVARB

Mastering MySQL Blobs: Ein Schritt-für-Schritt-TutorialMastering MySQL Blobs: Ein Schritt-für-Schritt-TutorialMay 08, 2025 am 12:01 AM

Tomastermysqlblobs, folge thessteps: 1) choosetheApprotedblobType (Tinyblob, Blob, Mediumblob, Longblob) basiertdondeatasize

BLOB -Datentyp in MySQL: Eine detaillierte Übersicht für EntwicklerBLOB -Datentyp in MySQL: Eine detaillierte Übersicht für EntwicklerMay 07, 2025 pm 05:41 PM

BlobDatatypesinmysqlareUTForVoringLargebinaryDatalikeMageSoraudio.1) UseBlobTypes (Tinyblobtolongblob) basiertdatasizeneeds. 2) StoreBlobsin Perplate Petooptimize -Leistung.3) berücksichtigt den Vorbild für Forel Blob Romana DatabaseSizerIndimProveBackupupe

So fügen Sie Benutzer von der Befehlszeile zu MySQL hinzuSo fügen Sie Benutzer von der Befehlszeile zu MySQL hinzuMay 07, 2025 pm 05:01 PM

ToadduSerStomysqlfromtheCommandline, loginasroot, thenusecreateuser'username '@' host'identified by'password ';

Was sind die unterschiedlichen Zeichenfolgendatentypen in MySQL? Eine detaillierte ÜbersichtWas sind die unterschiedlichen Zeichenfolgendatentypen in MySQL? Eine detaillierte ÜbersichtMay 07, 2025 pm 03:33 PM

MySqloffereightStringDatatypes: char, varchar, binär, varbarin, blob, text, enum.1) charisfixed-length, idealforconsistentDatalikecountrycodes.2) varcharisvariable-Länge, effizientes VariationDatalikenames.3)

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor