


Konfigurieren Sie einige serverseitige Funktionen von PHP, um die PHP-Sicherheit zu verbessern
Dec 05, 2016 am 11:19 AMShaun Clowes und rfp haben zuvor ausführlich die Probleme vorgestellt, auf die PHP- und CGI-Programme w?hrend des Programmierprozesses sto?en, und wie man das System durch Anwendungsschwachstellen durchbrechen kann. In diesem Artikel werden wir einige PHP-Kenntnisse durchgehen
Serverseitige Funktionen zur Konfiguration zur Verbesserung der PHP-Sicherheit. Beim Schreiben von CGI-Skripten müssen wir auf verschiedene Sicherheitsaspekte achten und Benutzereingaben streng filtern. Aber wie k?nnen wir am Ufer entlang gehen, ohne unsere Schuhe nass zu machen, und wie k?nnen wir Sesamsamen essen
, ohne Sesamsamen zu verlieren? Es gab schwerwiegende Fehler, selbst in bekannten Programmen wie phpnuke und phpMyAdmin.
Problem, ganz zu schweigen von den Skripten, die von Gangstern wie mir geschrieben wurden. Wir gehen also davon aus, dass es, wie zum Beispiel vor einiger Zeit, ein ernstes Problem mit dem PHP-Skript gegeben hat
Es gibt ein gro?es Problem damit, dass phpnuke PHP-Skripte hochladen kann. Wie k?nnen wir den Server konfigurieren, um zu verhindern, dass das Skript das System durchbricht, wenn ein solches Problem auftritt?
1. Achten Sie beim Kompilieren auf das Patchen bekannter Schwachstellen
Ab 4.0.5 hat die Mail-Funktion von PHP einen fünften Parameter hinzugefügt, der jedoch nicht ordnungsgem?? gefiltert wird, sodass PHP-Anwendungen dies k?nnen Durchbrechen Sie die Einschr?nkungen des Safe_Mode und führen Sie Befehle aus. Wenn Sie also 4.0.5 und 4.0.6 verwenden
Vor der Kompilierung müssen wir die Datei ext/standard/mail.c im PHP-Quellcodepaket ?ndern, um den fünften Parameter der Mail-Funktion zu deaktivieren oder Shell-Zeichen zu filtern. In Zeile 152 der Datei mail.c ist dies die folgende Zeile:
if (extra_cmd != NULL) {
gefolgt von extra_cmd=NULL; oder extra_cmd = php_escape_shell_cmd(extra_cmd); und dann kompilieren php, dann haben wir die Schwachstelle gepatcht.
2. ?ndern Sie die php.ini-Konfigurationsdatei
Nehmen Sie ?nderungen basierend auf der php.ini-dist der PHP-Distributionsversion vor.
1)Fehlerbehandlung und -protokollierung
Im Bereich Fehlerbehandlung und -protokollierung k?nnen Sie einige Einstellungen vornehmen. Zuerst finden Sie:
display_errors = On
Standardm??ig schaltet PHP die Fehlermeldungsanzeige ein. Wir haben es ge?ndert in:
display_errors = Off
Nach dem Ausschalten der Fehleranzeige wird die PHP-Funktion aktiviert Ausführungsfehler Die Informationen werden dem Benutzer nicht mehr angezeigt, was Angreifer bis zu einem gewissen Grad daran hindert, den physischen Standort des Skripts und einige andere nützliche Informationen aus der Fehlermeldung zu erfahren, was zumindest bestimmte Hindernisse für die Black-Box-Erkennung des Angreifers schafft . Diese Fehlermeldungen k?nnen für uns selbst nützlich sein. Wir k?nnen sie in die angegebene Datei schreiben lassen und dann Folgendes ?ndern:
log_errors = Off
in:
log_errors = On
und das angegebene Datei, suchen Sie die folgende Zeile:
;error_log = Dateiname
Entfernen Sie den vorherigen; Kommentar und ?ndern Sie den Dateinamen in die angegebene Datei, z. B.
/usr/local/apache/logs/php_error.log
error_log = /usr/local/apache/logs/php_error.log
Auf diese Weise werden alle Fehler in die Datei php_error.log geschrieben.
2)Abgesicherter Modus
Die Funktion ?safe_mode“ von PHP schr?nkt viele Funktionen ein oder deaktiviert sie, wodurch PHP-Sicherheitsprobleme weitgehend gel?st werden k?nnen. Suchen Sie im Abschnitt ?Abgesicherter Modus“ nach:
safe_mode = Off
und ?ndern Sie es in:
safe_mode = On
Dadurch wird die Funktion ?safe_mode“ aktiviert. Einige Funktionen wie ?shell_exec()“ und ?die Systembefehle ausführen k?nnen, sind verboten, und einige andere Ausführungsfunktionen wie: exec()“,
system(), passthru(),
popen() ist auf die Ausführung von Programmen in dem durch ?safe_mode_exec_dir“ angegebenen Verzeichnis beschr?nkt. Wenn Sie wirklich einige Befehle oder Programme ausführen m?chten, finden Sie Folgendes:
safe_mode_exec_dir =
Geben Sie den Pfad des auszuführenden Programms an, z. B.:
safe_mode_exec_dir = /usr/local/php/exec
Kopieren Sie dann das Programm, das Sie verwenden m?chten, in das Verzeichnis /usr/local/php/exec, damit die eingeschr?nkten Funktionen wie oben das Programm weiterhin im Verzeichnis ausführen k?nnen.
Ausführliche Informationen zu eingeschr?nkten Funktionen im abgesicherten Modus finden Sie in den Anweisungen der Haupt-PHP-Site:
[url]http://www.php.net/manual/en/features.safe- mode.php[/url]
3) deaktivieren_funktionen
Wenn Sie sich über die Sch?dlichkeit einiger Funktionen nicht im Klaren sind und diese nicht verwenden, deaktivieren Sie diese Funktionen einfach. Suchen Sie die folgende Zeile:
disable_functions =
Fügen Sie die zu deaktivierende Funktion nach ?=" hinzu und trennen Sie mehrere Funktionen durch ",".
3. ?ndern Sie httpd.conf
Wenn Sie Ihrem PHP-Skriptprogramm nur erlauben, im Webverzeichnis zu arbeiten, k?nnen Sie auch die Datei httpd.conf ?ndern, um den Operationspfad von PHP einzuschr?nken. Wenn Ihr Webverzeichnis beispielsweise /usr/local/apache/htdocs ist, fügen Sie diese Zeilen zu
httpd.conf hinzu:
l?st einen Fehler wie diesen aus:
Warnung: open_basedir-Einschr?nkung in Kraft. Datei befindet sich im falschen Verzeichnis in /usr/local/apache/htdocs/open.php in Zeile 4 und so weiter.
4. Kompilieren Sie den PHP-Code
Zend hat einen gro?en Beitrag zu PHP geleistet. Die PHP4-Engine verwendet Zend und hat auch viele PHP-Erweiterungskomponenten wie ZendOptimizer und ZendEncode entwickelt. Der Optimierer ZendOptimizer muss nur unter [url]http://www.zend.com[/url] registriert werden, um kostenlos zu sein?...
Die gerade 鴝 gemischte Bartkante ist im Süden immer niedrig?/a> [1] .1.0-PHP_4.0.5-Linux_glibc21-i386.tar.gz
ZendOptimizer-1[1].1.0-PHP_4.0.5-Solaris-sparc.tar.gz
ZendOptimizer-1[1]. 1.0-PHP_4 .0.5-Windows-i386.zip
Die Installation des Optimierers ist sehr bequem und im Paket finden Sie detaillierte Anweisungen. überprüfen Sie am Beispiel der UNIX-Version das Betriebssystem genau und extrahieren Sie die Datei ZendOptimizer.so im Paket in ein Verzeichnis, vorausgesetzt, es ist /usr/local/lib
, und fügen Sie zwei S?tze in php.ini hinzu:
zend_optimizer.optimization_level=15
zend_extension="/usr/local/lib/ZendOptimizer.so"
Das ist es. Verwenden Sie phpinfo(), um den folgenden Text auf der linken Seite des Zend-Symbols anzuzeigen:
mit Zend Optimizer v1.1.0, Copyright (c) 1998-2000, von Zend Technologies
Dann hat der Optimierer erfolgreich angeh?ngt.
Aber der Compiler ZendEncode ist nicht kostenlos. Hier ist ein [url]http://www.PHPease.com[/url] Design von Ma Yong.
... Mi Jiantaos Kangmo胗?/a> [url]http://www.zend.com[/url] Kontakt, um die Lizenzvereinbarung zu erhalten.
Nachdem das PHP-Skript kompiliert wurde, erh?ht sich die Ausführungsgeschwindigkeit des Skripts erheblich. Die Skriptdatei kann nur eine Reihe verstümmelter Zeichen erkennen. Dies verhindert, dass der Angreifer das Skriptprogramm auf dem Server weiter analysiert. und der ursprüngliche Klartext im PHP-Skript Gespeicherte Passw?rter werden ebenfalls vertraulich behandelt, beispielsweise MySQL-Passw?rter. Allerdings ist es aufw?ndiger, das Skript auf der Serverseite zu ?ndern. Es ist besser, es lokal zu ?ndern und dann hochzuladen.
5. Berechtigungseinstellungen für Dateien und Verzeichnisse
Mit Ausnahme des Upload-Verzeichnisses dürfen die Berechtigungen für andere Verzeichnisse und Dateien im Webverzeichnis dem Benutzer ?nobody“ nicht das Schreiben erlauben
Berechtigungen. Andernfalls kann der Angreifer die Homepage-Datei ?ndern, daher müssen die Berechtigungen des Webverzeichnisses richtig festgelegt werden. Au?erdem darf der Besitzer des PHP-Skripts kein Root sein, da Dateien im Safe_mode gelesen werden.
Die Funktion ist eingeschr?nkt, sodass der Eigentümer der gelesenen Datei mit dem Eigentümer des aktuell ausgeführten Skripts identisch sein muss, um gelesen zu werden. Andernfalls wird bei eingeschalteter Fehleranzeige ein Fehler wie der folgende angezeigt:
Warnung: SAFE MODE-Einschr?nkung in Kraft. Das Skript mit der UID 500 ist
Der Zugriff auf /etc/passwd im Besitz von UID 0 ist nicht gestattet
/usr/local/apache/htdocs/open.php in Zeile 3
Auf diese Weise k?nnen wir verhindern, dass viele Systemdateien gelesen werden, wie zum Beispiel: /etc/passwd usw.
Auch die Besitzer des Upload-Verzeichnisses und des Upload-Skripts müssen gleich eingestellt sein, sonst kommt es zu Fehlern im Safe_mode.
6. Mysql-Startberechtigungseinstellungen
Mysql sollte nicht mit Root gestartet werden. Am besten erstellen Sie einen anderen Mysqladm-Benutzer. Sie k?nnen dem Systemstartskript einen Satz hinzufügen, z. B. /etc/rc.local:
su mysqladm -c "/usr/local/mysql/share/mysql/mysql.server start"
Danach Wenn das System neu startet, wird der MySQL-Prozess auch automatisch als Mysqladmin-Benutzer gestartet.
7. Durchsicht und Durchsicht von Protokolldateien und Upload-Verzeichnissen
Das Auffinden von Angriffsspuren aus einer so gro?en Protokolldatei ist wie das Finden einer Nadel in einer Heuhaufen, und es ist m?glicherweise nicht m?glich. Die im Internet hochgeladenen Dateien sollten ebenfalls regelm??ig überprüft werden. M?glicherweise liegt ein Problem mit dem Programm vor und der Benutzer hat einige illegale Dateien hochgeladen, z. B. beim Ausführen von Skripten.
8. Patches des Betriebssystems selbst
Das Patchen bekannter Schwachstellen im System ist die grundlegendste Verantwortung des Systemadministrators und stellt auch die letzte Verteidigungslinie dar.
Nach der obigen Konfiguration kann man zwar nicht sagen, dass sie uneinnehmbar ist, aber sie hat dem Angreifer in gewissem Ma?e auch gro?e Probleme bereitet, selbst wenn das PHP-Skript schwerwiegende Schwachstellen aufweist Durch das Programm kann der Angreifer keine praktischen Folgen für die Zerst?rung haben.

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte ma?geschneiderte Foreiglableforlarge-ScaleApplikationen

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugeh?rigen Daten im Voraus laden. 2. W?hlen Sie nur die erforderlichen Felder aus, um das Laden vollst?ndiger Entit?ten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entit?t und rufen Sie Clear () regelm??ig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische ?nderungsverfolgung in Szenarien, in denen ?nderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gew?hrleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Um einen flexiblen PHP -Microservice zu erstellen, müssen Sie Rabbitmq verwenden, um eine asynchrone Kommunikation zu erreichen. 1. Decken Sie den Dienst über Nachrichtenwarteschlangen ab, um Kaskadenfehler zu vermeiden. 2. Konfigurieren Sie persistente Warteschlangen, anhaltende Nachrichten, Freigabebest?tigung und manuelles ACK, um die Zuverl?ssigkeit zu gew?hrleisten. 3.. Verwenden Sie exponentielle Backoff -Wiederholung, TTL und Dead Letter -Warteschlangenverarbeitungsfehler; 4. Verwenden Sie Tools wie Supervisford, um Verbraucherprozesse zu schützen und Herzschlagmechanismen zu erm?glichen, um die Gesundheit der Service zu gew?hrleisten. und letztendlich die F?higkeit des Systems erkennen, kontinuierlich in Fehlern zu arbeiten.

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. W?hlen Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfl?che zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gef?hrliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschr?nken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabh?ngigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbeh?rde zum Verwalten mehrerer Prozesse wie Cron; 6. überprüfen

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

Der Müllsammlung von PHP basiert auf der Referenzz?hlung, aber kreisf?rmige Referenzen müssen von einem periodischen kreisf?rmigen Müllsammler verarbeitet werden. 1. Die Referenzzahl gibt den Speicher sofort frei, wenn keine Referenz auf die Variable vorhanden ist. 2. Referenzreferenz bewirkt, dass Speicher nicht automatisch freigegeben werden kann, und es h?ngt davon ab, dass GC ihn erfasst und reinigt. 3.. GC wird ausgel?st, wenn das "m?gliche Wurzel" den Schwellenwert erreicht oder manuell gc_collect_cycles () aufruft; 4. Langzeit laufende PHP-Anwendungen sollten gc_status () überwachen und rechtzeitig gc_collect () aufrufen, um Speicherleckage zu vermeiden. 5. Zu den Best Practices geh?rt die Vermeidung von kreisf?rmigen Referenzen, die Verwendung von gc_disable () zur Optimierung der Leistungsschlüsselbereiche und Dereference -Objekte über die Clear () -Methode des ORM.

Mit Bref erm?glicht es PHP-Entwicklern, skalierbare, kostengünstige Anwendungen zu erstellen, ohne Server zu verwalten. 1.Bref bringt Php nach AWSLambda, indem er eine optimierte PHP -Laufzeitschicht bereitstellt, Php8.3 und andere Versionen unterstützt und sich nahtlos in Frameworks wie Laravel und Symfony integriert. 2.. 3. Führen Sie den Befehl ServerlessDeploy aus, um die Bereitstellung abzuschlie?en, apiCateway automatisch zu konfigurieren und Zugriffs -URLs zu generieren. 4. Für Lambda -Beschr?nkungen bietet BREF L?sungen.

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections
