Code前端首页关于Code前端联系我们

如何使用PHP安全模式保护您的网站安全

terry 2年前 (2023-09-28) 阅读数 55 #Web安全

如何使用 PHP 的安全模式功能来保护您网站的安全性

越来越多的用户使用PHP环境,相关的安全问题也变得越来越重要。 PHP环境提供的安全模式是一个非常重要的内置安全机制。 PHP安全模式可以有效控制PHP环境中的某些功能(如system()函数)并执行大部分文件操作功能。权限控制,同时不允许更改某些关键文件(例如/etc/passwd)。但是,默认的 php.ini 配置文件不启用安全模式。

本文档介绍了如何使用PHP安全模式来保护您网站的安全。

1。启用PHP安全模式

PHP环境提供的安全模式是一个非常重要的内置安全机制。 PHP安全模式可以有效控制PHP环境中的一些函数(如system()函数)。大多数文件编辑功能都会检查权限,并且不允许修改某些关键文件(例如/etc/passwd)。但是,默认的 php.ini 配置文件不启用安全模式。

可以通过修改php.ini配置文件来启用PHP安全模式:复制代码

  1. safe_mode = on

2.用户组安全

如果启用安全模式,如果选项safe_mode_gid被禁用, PHP 脚本可以访问该文件,同一用户组中的用户也可以访问该文件。

因此,建议您禁用此选项: 复制代码

  1. safe_mode_gid = off

注意:此选项参数仅适用于 Linux 操作系统。

如果不进行此设置,您可能无法使用服务器网站文件夹中的文件。 ? usr/bin

如果正常情况下不需要运行任何程序,建议不要指定运行系统程序的目录。您可以指定一个文件夹,然后将要运行的程序复制到该文件夹​​中,例如:复制代码

  1. safe_mode_exec_dir = /temp/cmd

但建议您不要运行任何程序。这种情况下,只需将执行目录指向网页文件夹即可:复制代码

  1. safe_mode_exec_dir = /usr/www

注意:执行目录的路径以您实际的目录路径为准操作系统。

4。如何在安全模式下包含文件

如果您想在安全模式下包含一些公共文件,只需更改以下选项: 复制代码

  1. safe_mode_include_dir = /usr/www/include/

关于一般情况下,PHP脚本中包含的文件都会写入程序中,可以根据您的具体需要进行设置。

5。管理 PHP 脚本可以访问的目录

使用 open_basedir 选项来控制 PHP 脚本只能访问指定的目录。这样可以防止PHP脚本访问不应该访问的文件,一定程度上减少了phpshell的破坏。一般情况下可以设置为只访问网站文件夹:复制代码

  1. open_basedir= /usr/www

6.禁用危险功能

如果开启了安全模式,则无需强制不应该做的工作禁令。但出于安全考虑,建议配置相关设置。例如,如果您不想运行包括 system() 等在内的 PHP 函数,以及像 phpinfo() 这样可以查看 PHP 信息的函数,您可以通过以下设置禁用这些函数: 复制代码

  1. disable_functions = system , passthru, exec, shell_exec, popen, phpinfo, escapeshellarg, escapeshellcmd, proc_close, proc_open, dl

如果您想禁止对文件和目录的操作,可以禁用以下与文件相关的操作。复制代码

  1. disable_functions = chdir、chroot、dir、getcwd、opendir、readdir、scandir、fopen、卸载、删除、复制、mkdir、rmdir、重命名、文件、file_get_contents、fputs、fwrite、chgrp、chmod、chown

注:以上设置仅列出了一些最常用的文件处理功能。您还可以将上述执行命令功能与这些文件处理功能结合起来,以抵御大多数 phpshell 威胁。 ?

设置完成后,黑客在运行telnet 80并尝试连接到您的服务器时将无法看到PHP版本信息。

8。禁止注册全局变量

提交到PHP环境的变量,包括使用POST或GET命令提交的变量,都会自动注册为全局变量,可以直接访问。这对于你的服务器来说是非常不安全的,所以建议你禁用注册全局变量的选项,并禁止将提交的变量注册为全局变量。复制代码

  1. register_globals = off

注意:该选项参数在 PHP 5.3 及更高版本中被删除。

如果设置了这个,当然要使用合理的方法来获取相应的变量。例如,要获取GET命令提交的变量var,需要使用$_GET['var']命令来获取。设计PHP程序时应该注意这一点。

9。防范SQL注入

SQL注入是一个非常危险的问题,它可能会导致网站后端被破坏甚至整个服务器崩溃。

magic_quotes_gpc 选项默认处于禁用状态。如果启用该选项,PHP会自动转换用户提交的SQL查询请求(例如将'转换为\'等),这对于防止SQL注入攻击非常有效。因此建议您将该选项设置为: 复制代码

  1. magic_quotes_gpc = on

注意:该选项参数在 PHP 5.4.0 及更高版本中已被删除。

10。错误信息管理

一般情况下,PHP环境在没有连接数据库或者其他情况下会抛出错误信息。错误信息中可能包含PHP脚本或查询SQL语句的当前路径信息等。如果信息暴露给黑客,则不安全,因此建议您禁用此错误消息: 复制代码

  1. display_errors = Off

如果要显示错误消息,请确保设置错误消息的级别显示 显示。例如,要仅显示警告上方的错误消息:复制代码

  1. error_reporting = E_WARNING & E_ERROR

注意:强烈建议禁用错误消息。 ?存储日志的文件夹。建议您将 PHP 错误日志和 Apache 日志保存在同一文件夹中:复制代码

  1. error_log = /usr/local/apache2/logs/php_error.log

注意:该文件必须设置为allowed Apache 用户或用户组具有写权限。

12。升级PHP版本

  • PHP的新功能非常有用。
  • 比之前的版本快2-3倍。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门