Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie Sicherheitsprobleme in PHP

So lösen Sie Sicherheitsprobleme in PHP

(*-*)浩
(*-*)浩Original
2019-09-19 15:26:073196Durchsuche

PHP-Sicherheitskonfiguration

So lösen Sie Sicherheitsprobleme in PHP

(1) Aktivieren Sie den abgesicherten Modus von PHP (empfohlen). lernen:PHP-Programmierung vom Einstieg bis zur Kompetenz)

Der abgesicherte Modus von PHP ist ein sehr wichtiger integrierter Sicherheitsmechanismus, der einige Funktionen in PHP steuern kann, wie z. B. system(), und zwar Gleichzeitig steuern Sie viele Berechtigungen und erlauben keinen Zugriff auf bestimmte Schlüsseldateien, z. B. /etc/passwd. Die standardmäßige php.ini öffnet sie jedoch nicht:

safe_mode = on

(2) Benutzergruppensicherheit

Wenn „safe_mode“ aktiviert und „safe_mode_gid“ deaktiviert ist, kann das PHP-Skript auf die Datei zugreifen, und Benutzer in derselben Gruppe können ebenfalls auf die Datei zugreifen .

Es wird empfohlen, Folgendes festzulegen:

safe_mode_gid = off

Wenn es nicht festgelegt ist, können wir die Dateien im Verzeichnis unserer Server-Website möglicherweise nicht bedienen, wenn wir sie beispielsweise benötigen 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 auszuführende Programm angeben ausgeführtes Hauptverzeichnis:

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 das auszuführende Programm kopieren. wie zum Beispiel:

safe_mode_exec_dir = D:/tmp/cmd

Ich empfehle jedoch, kein Programm auszuführen, dann können Sie auf unser Webseitenverzeichnis verweisen:

safe_mode_exec_dir = D:/usr/www

(4) Dateien im abgesicherten Modus einbinden

Wenn Sie bestimmte öffentliche Dateien im abgesicherten Modus einschließen möchten, ändern Sie 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, was PHP-Skripte daran hindern kann Zugriff auf Verzeichnisse, auf die nicht zugegriffen werden sollte. 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. Wenn wir beispielsweise keine PHP-Funktionen wie system() ausführen möchten, die Befehle ausführen können, oder Funktionen wie phpinfo(), die PHP-Informationen anzeigen können, können wir sie verbieten:

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

If Um alle Datei- und Verzeichnisvorgänge zu verhindern, können Sie viele Dateivorgänge schließen

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

Oben sind nur einige der häufig verwendeten Dateiverarbeitungsfunktionen aufgeführt. Sie können die obige Ausführungsbefehlsfunktion auch mit dieser Funktion kombinieren, um Resist zu erhalten die meisten PHP-Shells.

(7) Schließen Sie den Verlust von PHP-Versionsinformationen im HTTP-Header

Um zu verhindern, dass Hacker die PHP-Versionsinformationen auf dem Server erhalten, können wir schließen Das Durchsickern dieser Informationen im HTTP-Header Header:

expose_php = Off

Wenn ein Hacker beispielsweise über Telnet www.greatmo.com 80 telnet, kann er keine PHP-Informationen 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, was möglich ist Der direkte Zugriff ist für den Server sehr unsicher, daher können wir nicht zulassen, dass er als globale Variable registriert wird. Daher deaktivieren wir die Option zur Registrierung globaler Variablen:

register_globals = Off

Wenn dies festgelegt ist, wird dies natürlich beim Abrufen der Es müssen angemessene Methoden verwendet werden, z. B. das Abrufen der von GET übermittelten Variablen var. Anschließend muss $_GET['var'] verwendet werden, um dies zu erhalten. PHP-Programmierer sollten darauf achten.

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

SQL-Injection ist ein sehr gefährliches Problem. Im kleinsten Fall wird das Backend der Website angegriffen Im schlimmsten Fall bricht der gesamte Server zusammen. Seien Sie also 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, z. B. „in“ usw. Dies wird der Fall sein Die Verhinderung von SQL-Injection spielt eine wichtige Rolle. 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 oder darunter verbunden ist Unter anderen Umständen werden die aktuellen Pfadinformationen des PHP-Skripts oder der SQL-Anweisung der Abfrage angezeigt. Diese Art von Informationen sind nach der Bereitstellung für Hacker nicht sicher. Daher wird im Allgemeinen empfohlen, dass der Server die Fehlermeldungen deaktiviert:

display_errors = Off

Wenn Sie 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 empfehle ich trotzdem, Fehleraufforderungen auszuschalten .

Das obige ist der detaillierte Inhalt vonSo lösen Sie Sicherheitsprobleme in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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