Heim  >  Artikel  >  Backend-Entwicklung  >  In drei Minuten lernen Sie die gefährlichen Funktionen kennen, auf die Sie beim Betrieb von vom Benutzer übermittelten Inhalten in PHP achten müssen.

In drei Minuten lernen Sie die gefährlichen Funktionen kennen, auf die Sie beim Betrieb von vom Benutzer übermittelten Inhalten in PHP achten müssen.

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-22 16:06:591975Durchsuche

Dieser Artikel stellt Ihnen die gefährlichen Funktionen vor, auf die Sie beim Betrieb von vom Benutzer übermittelten Inhalten in PHP achten müssen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

In drei Minuten lernen Sie die gefährlichen Funktionen kennen, auf die Sie beim Betrieb von vom Benutzer übermittelten Inhalten in PHP achten müssen.

Für unsere Programmentwicklung sind Benutzereingaben der erste Einstiegspunkt zur Lösung von Sicherheitsproblemen. Warum sagst du das? Unabhängig davon, ob es sich um SQL-Injection-, XSS- oder Datei-Upload-Schwachstellen handelt, hängen sie alle mit den vom Benutzer übermittelten Eingabeparametern zusammen. Heute werden wir nicht auf diese Probleme eingehen. Es gibt einige gefährliche Funktionen, die nicht direkt für Vorgänge verwendet werden können, z Für den Benutzer verwenden wir diesen Parameter direkt, um die Datei ohne Überprüfung einzuschließen. Der Parameter, den wir übergeben, ist ?g=/etc/passwd, dann werden wahrscheinlich alle Benutzerkontoinformationen auf dem Server direkt durchgesickert.

Außerdem sind einige Funktionen, die Shell-Befehle ausführen, äußerst gefährlich.

include($g);

Wenn der Parameter, den wir übergeben, ?g=ls -la / ist, wird auch das gleiche Serververzeichnis angezeigt. Dies zeigt nur die Verzeichnisstruktur. Wenn andere, erschreckendere Befehle verwendet werden, sind die Folgen katastrophal.

In ähnlicher Weise verarbeiten wir Dateien häufig anhand bestimmter IDs oder bestimmter Dateinamen, insbesondere wenn wir Dateien löschen. Wenn wir kein Urteil fällen, löschen wir möglicherweise direkt einige sehr wichtige Dateien.

echo system($g);

Wir erstellen $g weiterhin als ?g=../../../xxxx. Wenn die Berechtigungen dies zulassen, können verschiedene Systemdateien gelöscht werden.

Tatsächlich wurden im offiziellen PHP-Handbuch einige gute Vorschläge für diese Inhalte gegeben. Wir können uns auch direkt ansehen, was im PHP-Handbuch steht.

Die größten Schwächen vieler PHP-Programme sind keine Probleme mit der PHP-Sprache selbst, sondern werden durch das geringe Sicherheitsbewusstsein der Programmierer verursacht. Daher müssen Sie immer auf mögliche Probleme in jedem Codeabschnitt achten, um die möglichen Auswirkungen einer falschen Datenübermittlung zu ermitteln.

Achten Sie immer auf Ihren Code, um sicherzustellen, dass jede vom Client übermittelte Variable ordnungsgemäß überprüft wird, und stellen Sie sich dann einige Fragen:

    Wirkt sich dieses Skript nur auf die Dateien aus, die es voraussichtlich haben wird?
  • Können abnormale Daten nach der Übermittlung Auswirkungen haben?
  • Kann dieses Skript für unbeabsichtigte Zwecke verwendet werden?
  • Kann dieses Skript mit anderen Skripten kombiniert werden, um schlechte Dinge zu bewirken?
  • Werden alle Transaktionen ausreichend erfasst?
  • Denken Sie auch darüber nach, register_globals, magic_quotes oder andere Einstellungen zu deaktivieren, die das Programmieren komfortabler machen, aber die Legalität, Quelle und den Wert einer Variablen beeinträchtigen. Während der Entwicklung können Sie den Modus „error_reporting(E_ALL)“ verwenden, um zu überprüfen, ob Variablen vor der Verwendung überprüft oder initialisiert wurden, um zu verhindern, dass einige abnormale Daten durcheinander geraten.

Tatsächlich können die meisten Sicherheitsprobleme gelöst werden, solange diese Vorschläge befolgt werden. Auch hier können Sie keiner Benutzerausgabe vertrauen. Bitte führen Sie während des Tests verschiedene Überprüfungen durch, einschließlich, aber nicht beschränkt auf, Grenzwerte, Sonderzeichen, Sonderbefehle, außerhalb der Grenzen liegende Werte, Verzeichnisberechtigungen usw. Verwenden Sie Benutzereingaben nicht als direkte Parameter für Dateien, Skriptausführung und Dateivorgänge, es sei denn, dies ist erforderlich. Wenn Sie sie verwenden müssen, müssen Sie verschiedene Formen der Filterung und Überprüfung durchführen.

Testcode:

unlink('./' . $g);

Empfohlenes Lernen:

php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonIn drei Minuten lernen Sie die gefährlichen Funktionen kennen, auf die Sie beim Betrieb von vom Benutzer übermittelten Inhalten in PHP achten müssen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen