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"
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]));
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