Heim > Backend-Entwicklung > PHP-Tutorial > Reichen mysql_real_escape_string() und mysql_escape_string() für die App-Sicherheit aus?

Reichen mysql_real_escape_string() und mysql_escape_string() für die App-Sicherheit aus?

Mary-Kate Olsen
Freigeben: 2024-11-02 03:27:03
Original
895 Leute haben es durchsucht

Are mysql_real_escape_string() and mysql_escape_string() Sufficient for App Security?

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:

  • Trotz Schutzansprüche bleiben diese Funktionen anfällig für SQL-Injections, insbesondere in Bezug auf PHP-Variablen, die in Abfragen verwendet werden.
  • Beispiel:

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

    Diese Abfrage kann sein wird durch das Einfügen schädlicher Daten ausgenutzt, was möglicherweise zu unbefugtem Datenbankzugriff führt.

LIKE-SQL-Angriffe:

  • LIKE-Abfragen können durch die Verwendung kompromittiert werden Sonderzeichen wie „%“ oder „_“, um die beabsichtigten Suchkriterien zu umgehen.
  • Beispiel:

    $sql = "SELECT url FROM GrabbedURLs WHERE " . mysql_real_escape_string($field) . " LIKE '%s%%' LIMIT %s";  
    Nach dem Login kopieren

    Diese Abfrage ermöglicht es einem Angreifer, alle Datensätze abzurufen, stellt Sicherheitsrisiken dar.

Charset-Exploits:

  • Internet Explorer bleibt anfällig für Charset-Exploits, die es Hackern ermöglichen, beliebige SQL-Befehle einzuschleusen. einschließlich SQL-Injections.

Empfohlene Lösung: Vorbereitete Anweisungen

Um diese Schwachstellen zu beheben, besteht die empfohlene Sicherheitsmaßnahme darin, vorbereitete Anweisungen zu verwenden.

  • Vorbereitete Anweisungen nutzen die inhärenten Sicherheitsmechanismen des Datenbankservers.
  • Sie verhindern SQL-Injections, indem sie nur das vorgesehene SQL ausführen.
  • Vorbereitete Anweisungen vereinfachen außerdem den Code und minimieren Schwachstellen.

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())) { }
Nach dem Login kopieren

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!

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