Heim > Datenbank > MySQL-Tutorial > Reichen „mysql_real_escape_string()' und „mysql_escape_string()' aus, um meine App vor SQL-Injection zu schützen?

Reichen „mysql_real_escape_string()' und „mysql_escape_string()' aus, um meine App vor SQL-Injection zu schützen?

Mary-Kate Olsen
Freigeben: 2024-12-06 03:34:12
Original
231 Leute haben es durchsucht

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure My App from SQL Injection?

Sind MySql_real_escape_string() und mysql_escape_string() für die App-Sicherheit ausreichend? Bewertung potenzieller Schwachstellen

Trotz ihrer häufigen Verwendung schützen mysql_real_escape_string() und mysql_escape_string() Datenbanken möglicherweise nicht vollständig vor SQL-Angriffen, wodurch sie anfällig für verschiedene böswillige Exploits sind.

SQL-Injection-Angriffe

Entgegen der landläufigen Meinung mysql_real_escape_string() kann SQL-Injections nicht in allen Szenarien verhindern. Es maskiert effektiv variable Daten, schützt Tabellennamen, Spaltennamen oder LIMIT-Felder jedoch nicht vor böswilliger Manipulation. Diese Einschränkung kann von Angreifern ausgenutzt werden, um Abfragen wie die folgenden zu erstellen:

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

Ein erfahrener Hacker könnte diese Escape-Funktionen immer noch umgehen, indem er die Feld- oder Wertvariablen manipuliert, um eine böswillige Abfrage zu erstellen.

LIKE SQL-Angriffe

LIKE SQL-Angriffe können auch mysql_real_escape_string() umgehen Schutzmaßnahmen. Bei Anfragen mit LIKE „$data%“-Anweisungen könnte ein Angreifer eine leere Zeichenfolge als Eingabe bereitstellen, um alle Datensätze abzugleichen, wodurch möglicherweise vertrauliche Informationen wie Kreditkartennummern preisgegeben werden.

Charset Exploits

Charset-Exploits bleiben eine Bedrohung, insbesondere im Internet Explorer. Durch die Ausnutzung von Zeichensatzunterschieden zwischen der Datenbank und dem Webbrowser können Angreifer bösartige Abfragen ausführen, die die vollständige Kontrolle über den SQL-Server erlangen.

LIMIT-Exploits

LIMIT-Exploits erlauben Angreifer können die LIMIT-Klausel einer SQL-Abfrage manipulieren und damit mehrere Abfragen zusammenführen und nicht autorisierte Befehle ausführen.

Vorbereitete Anweisungen als robuste Verteidigung

Um diese Schwachstellen zu bekämpfen und eine effektive App-Sicherheit zu gewährleisten, erweisen sich vorbereitete Erklärungen als bevorzugter Verteidigungsmechanismus. Vorbereitete Anweisungen verwenden serverseitige Validierung, um nur autorisierte SQL-Anweisungen auszuführen, und bieten so einen proaktiven Schutz gegen bekannte und unbekannte Exploits.

Codebeispiel für die Verwendung vorbereiteter Anweisungen

$pdo = new PDO($dsn);

$column = 'url';
$value = 'http://www.stackoverflow.com/';
$limit = 1;

$validColumns = array('url', 'last_fetched');

// Validate the $column parameter
if (!in_array($column, $validColumns)) { $column = 'id'; }


$statement = $pdo->prepare('SELECT url FROM GrabbedURLs ' .
                            'WHERE ' . $column . '=? ' .
                            'LIMIT ' . intval($limit));
$statement->execute(array($value));
while (($data = $statement->fetch())) { }
Nach dem Login kopieren

Fazit

Während mysql_real_escape_string() und mysql_escape_string() bietet einen gewissen Schutz vor SQL-Angriffen, sie sind jedoch nicht narrensicher. Die Implementierung vorbereiteter Anweisungen ist eine umfassendere und robustere Lösung, die Anwendungen vor einer Vielzahl von Schwachstellen schützt und so eine bessere App-Sicherheit gewährleistet.

Das obige ist der detaillierte Inhalt vonReichen „mysql_real_escape_string()' und „mysql_escape_string()' aus, um meine App vor SQL-Injection zu schützen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage