„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Sind `mysql_real_escape_string ()` und `mysql_escape_string ()` genug, um mySQL -Injektionsangriffe zu verhindern?

Sind `mysql_real_escape_string ()` und `mysql_escape_string ()` genug, um mySQL -Injektionsangriffe zu verhindern?

Gepostet am 2025-03-22
Durchsuche:923

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

mySql Injection Angriffe: Ein tieferes Tive

Einführung

die Sicherheit der Webanträge sind für entscheidende und database, und es ist ein Vital -of -Disc -Wert, und es ist ein Vital -of -is -Vorbeugung. Dieser Artikel untersucht die Wirksamkeit der Verwendung von MySQL_REAL_ESSCAPE_STRING () und MYSQL_ESCAPE_STRING () beim Schutz vor SQL -Angriffen. mysql_escape_string () werden üblicherweise zum Entkommen von Daten verwendet, bevor sie in SQL -Abfragen einfügen. Sind diese Funktionen jedoch ausreichend Schutz gegen alle Angriffsvektoren?

Experten Meinungen

Nach Experten, MySQL_REAL_ESSCAPE_STRING (), bietet keinen vollständigen Schutz gegen SQL -Injektionen. Dies liegt daran, dass es nur dazu gedacht ist, PHP -Variablen innerhalb von Abfragen zu entkommen. Es kann keine Flüchtlingstabelle oder Spaltennamen oder Begrenzungsfelder verarbeiten.

Anfälligkeit für bekannte Angriffe

Betrachten Sie das folgende Beispiel:

$ sql = "Auswahlnummer aus PhoneNumbers". "WO " . mysql_real_escape_string ($ field). "=". mysql_real_escape_string ($ value); Diese Abfrage ist anfällig für SQL -Injektion, wenn das Feld $ oder $ value böswillige Eingaben enthält. Ein Hacker könnte eine böswillige Abfrage erstellen, die entkommen und nicht autorisierte Befehle ausführt. Dies kann alle Aufzeichnungen in einer Tabelle aufdecken und möglicherweise vertrauliche Informationen enthüllen.

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

input 1: retektiert URLs, beginnend mit "http://www.reddit.com"

    2:
  • jedes Ergebnis (ANDE) (ANDE) (ANE EINGELN (ANDER) 2: jedes Ergebnis (ANDE) (ANE EINGELN (ANDER exploit)
  • input 3: führt unerwartete SQL -Abfragen aus

Die Lösung: Vorbereitete Aussagen

Experten empfehlen, vorbereitete Aussagen zu verwenden, anstatt Funziktionen zu bescheißen. Vorbereitete Aussagen sind serverseitige Techniken, die garantieren, dass nur gültige SQL ausgeführt wird. Dieser Ansatz bietet einen umfassenden Schutz gegen SQL -Injektionen, die sowohl bekannt als auch unbekannt sind. $ Spalte. '=? Grenze? '; $ Anweisung = $ pdo-> vorbereiten ($ sql); $ Anweisung-> execute (Array ($ value, $ limit));

$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]));
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3