Es ist offensichtlich, dass PHP+Mysql+Apache eine sehr beliebte Web -Technologie ist. Diese Kombination ist mächtig, skalierbar und immer noch frei. Die Standardeinstellungen von PHP eignen sich jedoch nicht so für Websites, die bereits online sind. Im Folgenden können wir die PHP -Sicherheitsrichtlinie verbessern, indem wir die Standardkonfigurationsdatei ändern!
0x01: Funktionsfunktion der Remote -URL -Datei deaktivieren
Wie die Dateiverarbeitungsfunktion von Fopen, die die Rul -Parameter der Datei akzeptiert (z. B. fopen ('http: //www.yoursit.com''r')).) Diese Funktion kann problemlos auf Remote -Ressourcen zugreifen. Dies ist jedoch eine sehr wichtige Sicherheitsbedrohung. Das Deaktivieren dieser Funktion zur Begrenzung der Dateifunktion ist eine gute Wahl. Nehmen Sie die folgenden Änderungen in der Php.ini -Datei vor:
Die Codekopie lautet wie folgt:
degly_url_fopen = off
0x02: Registrierung globaler Variablen deaktivieren
In Versionen vor 4.2.0 verwendete PHP globale Variablen als Eingabe. Diese Funktion heißt Register_Globals. In Webanwendungen verursachte es viele Sicherheitsprobleme, da die Angreifer in einigen Fällen leicht globale Variablen betreiben können. Glücklicherweise ist die Funktion in 4.2.0 standardmäßig deaktiviert. Es ist sehr gefährlich. Diese Funktion muss unter allen Umständen deaktiviert werden. Wenn einige Skripte diese Funktion benötigen, besteht eine potenzielle Sicherheitsbedrohung für dieses Skript. Ändern Sie pnp.ini, um diese Funktion zu deaktivieren:
Die Codekopie lautet wie folgt:
Register_globals = off
0x03: Eingeschränkte PHP -Les- und Schreibvorgänge eingeschränkt
In vielen Webentwicklungsprozessen müssen PHP -Skripte Operationen in das lokale Dateisystem wie/var/www/htdocs/Dateien lesen und schreiben. Um die Sicherheit zu verbessern, können Sie die Lesen und Schreiben von Berechtigungen lokaler Dateien ändern:
Die Codekopie lautet wie folgt:
open_basedir =/var/www/htdocs/Dateien
0x04: Posing Limit
Die Begrenzung von PHP -Ausführungszeiten, Speicherverbrauch, Post- und Upload -Daten ist die beste Strategie, und die folgende Konfiguration kann erstellt werden:
Die Codekopie lautet wie folgt:
max_execution_time = 30; Max -Skript -Ausführungszeit
max_input_time = 60; Maximale Zeit verbrachte die Analyse der Eingabe
memory_limit = 16m; Max -Speicher, der von einem Skript verwendet wird
Upload_MAX_FILESIZE = 2M; Maximale Dateigröße hochladen
post_max_size = 8m; Max Postgröße
0x05: Fehlermeldungen deaktivieren und die Protokollierung aktivieren
In den Standardeinstellungen gibt PHP eine Fehlermeldung an den Browser aus. Diese Standardeinstellung ist die vernünftigste Konfiguration während des Anwendungsentwicklungsprozesses. Es kann jedoch auch einige Sicherheitsinformationen an den Benutzer wie den Installationspfad und den Benutzernamen weiterleiten. In den entwickelten Websites ist es am besten, die Fehlermeldung zu deaktivieren und die Fehlermeldung in die Protokolldatei auszugeben.
Die Codekopie lautet wie folgt:
display_errors = off
log_errors = on
0x06: PHP -Datei ausblenden
Wenn die PHP-Datei nicht versteckt ist, können wir die Version des Server-PHP durch verschiedene Methoden erhalten: http://www.example.com/script.php?=phpb8b5f2a0-3c92-11d3-A3a9-4c7b08c100000000
Offensichtlich möchten wir nicht, dass Benutzer die PHP -Version Ihres Website -Servers direkt erhalten. Glücklicherweise gibt es einen Schalter in Php.ini, der diese Funktion deaktivieren kann:
Die Codekopie lautet wie folgt:
expose_php = off
0x07: Konfiguration des abgesicherten Modus
Standardmäßig kann PHP im abgesicherten Modus konfiguriert werden. In diesem Modus verbietet Apache den Zugriff auf Dateien, Umgebungsvariablen und binäre Programme. Im abgesicherten Modus ist das größte Problem, dass nur der Eigentümer der Datei auf diese PHP -Datei zugreifen kann. Wenn viele Entwickler dieses Programm gemeinsam entwickeln, ist eine solche Kulisse unrealistisch. Wenn Sie auf eine PHP -Datei zugreifen müssen, müssen Sie den Eigentümer der Datei ändern. Ein weiteres Problem ist, dass andere Programme auf diese PHP -Dateien nicht zugreifen können. Die folgende Konfiguration kann die Berechtigungen der Datei eher an eine Benutzergruppe als an einen einzelnen Benutzer ändern.
Die Codekopie lautet wie folgt:
safe_mode = off
safe_mode_gid = on
Durch Aktivieren von SAFE_MODE_GID können Sie mit dieser Gruppe von Apache auf PHP -Dateien zugreifen. Der abgesicherte Modus ist auch sehr effektiv bei der Verhinderung der binären Ausführung. Entwickler möchten jedoch in bestimmten Situationen einige binäre Dateien ausführen können. In diesen Sonderfällen können Sie die Binärdatei beispielsweise (/var/www/binärdateien) in ein Verzeichnis einfügen und die folgenden Einstellungen vornehmen:
Die Codekopie lautet wie folgt:
safe_mode_exec_dir =/var/www/binärdateien
Schließlich können Sie in den folgenden Einstellungen auf die Umgebungsvariablen des Servers zugreifen und ein "_" -Präfix bereitstellen, mit dem nur auf Umgebungsvariablen mit angegebenen Präfixen zugreifen kann:
Die Codekopie lautet wie folgt:
safe_mode_allowed_env_vars = php_
0x08: Beschränken Sie den öffentlichen Zugriff auf Dateien mit bestimmten Suffix -Namen
Aus Sicherheitsgründen können viele Dateien mit spezifischen Suffix -Namen von öffentlichen Benutzern nicht zugegriffen werden. Beispielsweise enthalten Dateien mit .inc -Suffix einige sensible Informationen wie MySQL -Verbindungsinformationen. Wenn es keine geeignete Konfiguration gibt, kann jeder Benutzer auf diese Konfigurationsdatei zugreifen. Um die Sicherheit der Website zu verbessern, müssen Sie Folgendes in der ..htaccess -Datei konfigurieren:
Die Codekopie lautet wie folgt:
<FatesMatch>
Bestellung erlaubt, leugnen
Von allen leugnen
</fileMatch>
0x09: Zusammenfassung
Die Standardkonfiguration von PHP ist für Entwickler. Wenn die Website für eine große Anzahl von Benutzern bestimmt ist, wird empfohlen, PHP neu zu konfigurieren.