Heim > Artikel > Backend-Entwicklung > Reichen mysql_real_escape_string() und mysql_escape_string() für die App-Sicherheit aus?
Sind mysql_real_escape_string() und mysql_escape_string() sicher genug für Anwendungen?
Einführung:
Die Aufrechterhaltung der App-Sicherheit ist von entscheidender Bedeutung, und die Datenbanksicherheit spielt eine wichtige Rolle. Während mysql_real_escape_string() und mysql_escape_string() häufig zum Schutz vor SQL-Injections verwendet werden, bestehen Bedenken hinsichtlich ihrer Wirksamkeit.
Frage:
Wird mysql_real_escape_string() und mysql_escape_string() genügen für die App-Sicherheit?
Antwort:
Nein.
Schwachstellen von mysql_real_escape_string() und mysql_escape_string()
Diese Funktionen reichen aufgrund mehrerer Sicherheitslücken nicht für eine umfassende App-Sicherheit aus:
SQL-Injection:
Beispiel:
$sql = "SELECT number FROM PhoneNumbers WHERE " . mysql_real_escape_string($field) . " = " . mysql_real_escape_string($value);
Diese Abfrage kann sein wird durch das Einfügen schädlicher Daten ausgenutzt, was möglicherweise zu unbefugtem Datenbankzugriff führt.
LIKE-SQL-Angriffe:
Beispiel:
$sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";
Diese Abfrage ermöglicht es einem Angreifer, alle Datensätze abzurufen, stellt Sicherheitsrisiken dar.
Charset-Exploits:
Empfohlene Lösung: Vorbereitete Anweisungen
Um diese Schwachstellen zu beheben, besteht die empfohlene Sicherheitsmaßnahme darin, vorbereitete Anweisungen zu verwenden.
Beispiel:
$pdo = new PDO($dsn); $column = 'url'; $value = 'http://www.stackoverflow.com/'; $limit = 1; $statement = $pdo->prepare('SELECT url FROM GrabbedURLs WHERE ' . $column . '=? LIMIT ' . $limit); $statement->execute(array($value)); while (($data = $statement->fetch())) { }
Fazit:
mysql_real_escape_string() und mysql_escape_string() bieten begrenzten Schutz vor bestimmten SQL-Injection-Angriffe. Sie reichen jedoch nicht aus, um Anwendungen vor verschiedenen anderen Schwachstellen zu schützen. Der empfohlene Ansatz besteht darin, vorbereitete Anweisungen zu verwenden, um eine umfassende App-Sicherheit zu gewährleisten.
Das obige ist der detaillierte Inhalt vonReichen mysql_real_escape_string() und mysql_escape_string() für die App-Sicherheit aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!