Zusammenfassung der PHP-Sicherheitsprobleme

巴扎黑
Freigeben: 2016-11-29 10:09:27
Original
846 Leute haben es durchsucht

(1) Aktivieren Sie den abgesicherten Modus von PHP

Der abgesicherte Modus von PHP ist ein sehr wichtiger integrierter Sicherheitsmechanismus, der einige Funktionen in PHP steuern kann, z. B. system(),

At Gleichzeitig werden die Berechtigungen vieler Dateioperationsfunktionen kontrolliert und bestimmte Schlüsseldateien wie /etc/passwd sind nicht zulässig.

Aber die Standard-php.ini öffnet den abgesicherten Modus nicht Öffne es:

safe_mode = on

(2) Benutzergruppensicherheit

Wenn Safe_mode aktiviert ist, ist Safe_mode_gid deaktiviert, dann kann das PHP-Skript auf die Datei zugreifen , und das gleiche
können auch auf die Datei zugreifen.

Es wird empfohlen, Folgendes festzulegen:

safe_mode_gid = off

Wenn wir es nicht festlegen, können wir die Dateien in unserem Verzeichnis möglicherweise nicht bearbeiten Zum Beispiel müssen wir

Bei der Bearbeitung von Dateien.

(3) Home-Verzeichnis zum Ausführen von Programmen im abgesicherten Modus

Wenn der abgesicherte Modus aktiviert ist, Sie aber bestimmte Programme ausführen möchten, können Sie das Home-Verzeichnis zum Ausführen des Programms angeben:

safe_mode_exec_dir = D:/usr/bin

Im Allgemeinen besteht keine Notwendigkeit, ein Programm auszuführen, daher wird empfohlen, das Systemprogrammverzeichnis nicht auszuführen. Sie können auf ein Verzeichnis verweisen,

und dann das Programm kopieren, das ausgeführt werden muss, zum Beispiel:

safe_mode_exec_dir = D:/tmp/cmd

Ich empfehle jedoch, kein anderes Programm als Sie auszuführen kann auf unser Webverzeichnis verweisen:

safe_mode_exec_dir = D:/usr/www

(4) Dateien im abgesicherten Modus einschließen

Wenn Sie einige öffentliche Dateien einschließen möchten Im abgesicherten Modus ändern Sie dann die Optionen:

safe_mode_include_dir = D:/usr/www/include/

Tatsächlich wurden die in PHP-Skripten enthaltenen Dateien im Allgemeinen im Programm selbst geschrieben kann je nach Bedarf eingestellt werden.

(5) Steuern Sie die Verzeichnisse, auf die PHP-Skripte zugreifen können

Verwenden Sie die Option open_basedir, um zu steuern, dass PHP-Skripte nur auf bestimmte Verzeichnisse zugreifen können, wodurch verhindert werden kann, dass PHP-Skripte auf
sollte nicht Die abgerufenen Dateien begrenzen den Schaden von phpshell bis zu einem gewissen Grad. Wir können es generell so einstellen, dass nur auf das Website-Verzeichnis zugegriffen wird:

open_basedir = D:/usr/www

(6 ) Gefährliche Funktionen ausschalten

Wenn der abgesicherte Modus aktiviert ist, ist ein Funktionsverbot nicht erforderlich, wir erwägen dies jedoch aus Sicherheitsgründen. Zum Beispiel

haben wir das Gefühl, dass wir keine PHP-Funktionen ausführen möchten, einschließlich system(), die Befehle ausführen können, oder Funktionen wie

phpinfo(), die PHP-Informationen anzeigen können, dann wir Sie können sie deaktivieren:

disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

Wenn Sie Datei- und Verzeichnisvorgänge deaktivieren möchten, können Sie viele Dateivorgänge deaktivieren

disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

Das Obige listet nur einige der häufig verwendeten Dateiverarbeitungsfunktionen auf. Sie können die oben genannte Ausführungsbefehlsfunktion auch mit dieser Funktion kombinieren

kann den meisten PHP-Shells widerstehen.

(7) Deaktivieren Sie den Verlust von PHP-Versionsinformationen im HTTP-Header

Um zu verhindern, dass Hacker die PHP-Versionsinformationen auf dem Server erhalten, können wir den Verlust dieser Informationen deaktivieren Informationen im http-Header:

expose_php = Aus

Wenn ein Hacker beispielsweise über Telnet www.shilicn.com 80 telnet, kann er die PHP-Informationen nicht sehen.

(8) Registrierung globaler Variablen deaktivieren

Variablen, die in PHP übermittelt werden, einschließlich Variablen, die mit POST oder GET übermittelt werden, werden automatisch als globale Variablen registriert und können direkt aufgerufen werden,

Dies ist für den Server sehr unsicher, daher können wir nicht zulassen, dass es als globale Variable registriert wird. Daher deaktivieren wir die Option „Globale Variable registrieren“:

register_globals = Off

Wenn es so eingestellt ist, müssen Sie natürlich angemessene Methoden verwenden, um die entsprechenden Variablen abzurufen, z. B. das Abrufen der von GET übermittelten Variablen var.

Dann müssen Sie $_GET['var'] verwenden Um es zu erhalten, sollten PHP-Programmierer darauf achten.

(9) Aktivieren Sie magic_quotes_gpc, um SQL-Injection zu verhindern.

SQL-Injection ist ein sehr gefährliches Problem. In kleinen Fällen wird das Backend der Website angegriffen, und in schwerwiegenden Fällen bricht der gesamte Server zusammen.

Seien Sie also unbedingt vorsichtig. Es gibt eine Einstellung in php.ini:

magic_quotes_gpc = Off

Diese ist standardmäßig deaktiviert, wenn sie aktiviert ist, werden vom Benutzer übermittelte SQL-Abfragen automatisch konvertiert,

Zum Beispiel die Konvertierung von „ in „ usw. spielt eine wichtige Rolle bei der Verhinderung von SQL-Injection. Daher empfehlen wir die Einstellung auf:

magic_quotes_gpc = On

(10) Fehlermeldungssteuerung

Im Allgemeinen gibt PHP einen Fehler aus, wenn es nicht mit der Datenbank verbunden ist oder unter anderen Umständen: Die Fehlermeldung enthält das PHP-Skript

Die vorherigen Pfadinformationen oder Abfrage-SQL-Anweisungen und andere Informationen sind nicht sicher, nachdem diese Art von Informationen an Hacker weitergegeben wurden. Daher wird allgemein empfohlen, dass der Server Fehlermeldungen deaktiviert:

display_errors = Off

Wenn Sie aber Fehlerinformationen anzeigen möchten, müssen Sie die Ebene der Fehleranzeige festlegen, z. B. nur Informationen oberhalb der Warnung anzeigen:

error_reporting = E_WARNING & E_ERROR

Natürlich, Ich empfehle dennoch, die Fehlermeldung auszuschalten.

(11) Fehlerprotokoll

Es wird empfohlen, die Fehlerinformationen nach dem Ausschalten von display_errors aufzuzeichnen, um den Grund zu finden, warum der Server läuft:

log_errors = Auf

Gleichzeitig müssen Sie auch das Verzeichnis festlegen, in dem das Fehlerprotokoll gespeichert wird. Es wird empfohlen, das Root-Apache-Protokoll zusammen zu speichern:

error_log = D:/usr/. local/apache2/logs/php_error.log

Hinweis: Die Datei muss Schreibberechtigungen für den Apache-Benutzer und die Apache-Gruppe zulassen.

MySQL-Betrieb herabstufen

Erstellen Sie einen neuen Benutzer wie mysqlstart

net user mysqlstart ****microsoft /add

net localgroup users mysqlstart / del

gehört keiner Gruppe

Wenn MYSQL in d:mysql installiert ist, erteilen Sie mysqlstart Vollzugriffsberechtigungen

und legen Sie dann die Diensteigenschaften von MYSQL im System fest service , wählen Sie in den Anmeldeeigenschaften diesen Benutzer mysqlstart aus und geben Sie das Passwort ein, OK.

Starten Sie den MYSQL-Dienst neu und dann wird MYSQL mit niedrigen Berechtigungen ausgeführt.

Wenn Apache auf einer Windows-Plattform basiert, müssen wir auf eine weitere Sache achten, die standardmäßig mit Systemberechtigungen ausgeführt wird.

Das ist beängstigend und führt dazu, dass sich die Leute sehr unwohl fühlen Wir geben Apache Reduzieren Sie die Berechtigungen.

net user apache ****microsoft /add

net localgroup users apache /del

ok Wir haben einen Benutzer apche erstellt, der keiner Gruppe angehört.

Wir öffnen den Computermanager, wählen Dienste aus, klicken auf die Eigenschaften des Apache-Dienstes, wir wählen Anmelden, wählen dieses Konto aus, wir geben das oben erstellte Konto und Passwort ein,

Neustart Der Apache-Dienst, ok, Apache läuft mit niedrigen Berechtigungen.

Tatsächlich können wir auch die Berechtigungen jedes Ordners so festlegen, dass der Apache-Benutzer nur das ausführen kann, was wir von ihm möchten, und für jedes Verzeichnis einen separaten Benutzer mit Lese-/Schreibzugriff erstellen.

Dies ist auch eine beliebte Konfigurationsmethode, die von vielen virtuellen Hostanbietern verwendet wird. Diese Methode ist jedoch übertrieben, wenn sie verwendet wird, um dies zu verhindern. (http://www.65066.com.cn)


Verwandte Etiketten:
php
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage