Der Inhalt dieses Artikels befasst sich mit der Frage, wie die Sicherheit in der PHP-Umgebung weiter gestärkt werden kann. Die Einführung von Methoden zur Verbesserung der Sicherheit der PHP-Umgebung hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.
Nach der Bereitstellung der PHP-Anwendung sollten Entwickler oder Betriebs- und Wartungspersonal immer auf Neuigkeiten zu PHP-Schwachstellen achten, die PHP-Version aktualisieren und Sicherheitsmaßnahmen in der PHP-Umgebung durchführen. In diesem Artikel erfahren Sie, wie Sie Ihre Website im Hinblick auf die WEB-Sicherheit stärker und sicherer machen.
1. Aktivieren Sie den abgesicherten Modus von PHP
Der von der PHP-Umgebung bereitgestellte abgesicherte Modus ist ein sehr wichtiger integrierter Sicherheitsmechanismus. Der abgesicherte PHP-Modus kann einige Funktionen in der PHP-Umgebung effektiv steuern. B. die Funktion system(), steuert die Berechtigungen für die meisten Dateioperationsfunktionen und erlaubt keine Änderung bestimmter Schlüsseldateien (z. B. /etc/passwd). Die Standardkonfigurationsdatei php.ini aktiviert jedoch nicht den abgesicherten Modus.
Sie können den abgesicherten PHP-Modus aktivieren, indem Sie die Konfigurationsdatei php.ini ändern:
safe_mode = on
2. Benutzergruppensicherheit
Wenn Sie den abgesicherten Modus aktivieren, wenn die Option „safe_mode_gid“ aktiviert ist Wenn diese Option deaktiviert ist, kann das PHP-Skript auf die Datei zugreifen und Benutzer derselben Benutzergruppe können ebenfalls auf die Datei zugreifen.
Daher wird empfohlen, diese Option auf „Aus“ zu setzen:
safe_mode_gid = off
Hinweis: Dieser Optionsparameter gilt nur für Linux-Betriebssysteme.
Wenn Sie diese Einstellung nicht festlegen, können Sie möglicherweise keine Dateien im Website-Verzeichnis des Servers bearbeiten.
3. Home-Verzeichnis zum Ausführen von Programmen im abgesicherten Modus
Wenn Sie bestimmte Programme ausführen möchten, nachdem Sie den abgesicherten Modus aktiviert haben, können Sie beispielsweise das Home-Verzeichnis angeben, in dem das Programm ausgeführt werden soll :
safe_mode_exec_dir = /usr/bin
Wenn Sie unter normalen Umständen kein Programm ausführen müssen, wird empfohlen, das Verzeichnis zum Ausführen von Systemprogrammen nicht anzugeben. Sie können ein Verzeichnis angeben und dann das Programm, das ausgeführt werden soll, in dieses Verzeichnis kopieren, zum Beispiel:
safe_mode_exec_dir = /temp/cmd
Es wird jedoch empfohlen, kein Programm auszuführen. In diesem Fall müssen Sie das Ausführungsverzeichnis nur auf das Webseitenverzeichnis verweisen:
safe_mode_exec_dir = /usr/www
Hinweis: Der Pfad zum Ausführungsverzeichnis unterliegt dem Verzeichnispfad Ihres tatsächlichen Betriebssystems .
4. Dateien im abgesicherten Modus einschließen
Wenn Sie einige öffentliche Dateien im abgesicherten Modus einschließen müssen, müssen Sie nur die folgenden Optionen ändern:
safe_mode_include_dir = /usr/www/include/
Allgemeiner Fall Unten Die im PHP-Skript enthaltenen Dateien wurden im Programm geschrieben und können entsprechend Ihren spezifischen Anforderungen 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 Bis zu einem gewissen Grad wurde der Schaden von PHPShell reduziert. Unter normalen Umständen kann es so eingestellt werden, dass nur auf das Website-Verzeichnis zugegriffen wird:
open_basedir = /usr/www
6. Gefährliche Funktionen deaktivieren
Wenn Sie den abgesicherten Modus aktivieren, müssen Sie das Funktionsverbot nicht festlegen. Aus Sicherheitsgründen wird jedoch dennoch empfohlen, entsprechende Einstellungen vorzunehmen. Wenn Sie beispielsweise PHP-Funktionen wie system() usw., die Befehle ausführen, und Funktionen wie phpinfo(), die PHP-Informationen anzeigen können, nicht ausführen möchten, können Sie diese Funktionen über die folgenden Einstellungen verbieten:
disable_functions = system, passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl
Wenn Sie Vorgänge für Dateien und Verzeichnisse verbieten möchten, können Sie die folgenden dateibezogenen Vorgä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
Hinweis: Die obigen Einstellungen listen nur einige der am häufigsten verwendeten Dateiverarbeitungsfunktionen auf. Sie können die oben genannten Ausführungsbefehlsfunktionen auch mit diesen Dateiverarbeitungsfunktionen kombinieren, um den meisten PHPShell-Bedrohungen zu widerstehen.
7. Deaktivieren Sie das Durchsickern von PHP-Versionsinformationen in HTTP-Headern.
Um zu verhindern, dass Hacker die PHP-Versionsinformationen auf dem Server erhalten, können Sie verhindern, dass diese Informationen in HTTP durchsickern Header-Inhalt:
expose_php = off
Nachdem dies festgelegt wurde, können Hacker die PHP-Versionsinformationen nicht sehen, wenn sie Telnet
8. Deaktivieren Sie die Registrierung globaler Variablen.
In der PHP-Umgebung übermittelte Variablen, einschließlich der mit dem POST- oder GET-Befehl übermittelten Variablen, werden automatisch als globale Variablen registriert und können direkt aufgerufen werden. Dies ist für Ihren Server sehr unsicher. Daher wird empfohlen, die Option zum Registrieren globaler Variablen zu deaktivieren und die Registrierung übermittelter Variablen als globale Variablen zu verbieten.
register_globals = off
Hinweis: Dieser Optionsparameter wurde in PHP 5.3 und späteren Versionen entfernt.
Wenn dies festgelegt ist, müssen natürlich vernünftige Methoden verwendet werden, um die entsprechenden Variablen zu erhalten. Um beispielsweise die vom GET-Befehl übermittelte Variable var abzurufen, müssen Sie den Befehl $_GET['var']
verwenden. Beim Entwerfen von PHP-Programmen müssen Sie darauf achten.
9.SQL-Injection-Schutz
SQL-Injection ist ein sehr gefährliches Problem, das dazu führen kann, dass das Backend der Website angegriffen wird oder sogar der gesamte Server zusammenbricht. Die Option
magic_quotes_gpc
ist standardmäßig deaktiviert. Wenn diese Option aktiviert ist, konvertiert PHP automatisch vom Benutzer übermittelte Anfragen für SQL-Abfragen (z. B. „in“ konvertieren usw.), was SQL-Injection-Angriffe sehr effektiv verhindert. Daher wird empfohlen, diese Option festzulegen an:
magic_quotes_gpc = on
Hinweis: Dieser Optionsparameter wurde in PHP 5.4.0 und späteren Versionen entfernt.
Daher ist es am besten, die PDO-Vorverarbeitung zur Verarbeitung von SQL-Abfragen zu verwenden.
10.错误信息控制
一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:
display_errors = Off
如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:
error_reporting = E_WARNING & E_ERROR
注意: 强烈建议您关闭错误提示信息。
11.错误日志
建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:
log_errors = On
同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:
error_log = /usr/local/apache2/logs/php_error.log
注意: 该文件必须设置允许 Apache 用户或用户组具有写的权限。
相关推荐:
Das obige ist der detaillierte Inhalt vonWie kann die Sicherheit in der PHP-Umgebung weiter gestärkt werden? Einführung in Methoden zur Verbesserung der Sicherheit der PHP-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!