如何利用 PHP 的安全模式功能来增强您网站的安全性

2024-01-15 0 446

正文:

随着越来越多的用户使用PHP环境,相关的安全问题也变得越来越重要。PHP 环境提供的安全模式是一个非常重要的嵌入式安全机制。PHP 安全模式可以有效控制 PHP 环境中的一些函数(比如 system()函数),控制大部分文件操作函数的权限,禁止一些关键文件被修改(比如/etc/passwd)。但是,默认的 php.ini 配置文件不支持安全模式。

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

首先,启用 PHP 的安全模式

PHP 环境提供的安全模式是一个非常重要的嵌入式安全机制。PHP 安全模式可以有效控制 PHP 环境中的一些函数(比如 system()函数),控制大部分文件操作函数的权限,禁止一些关键文件被修改(比如/etc/passwd)。但是,默认的 php.ini 配置文件不支持安全模式。

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


safe_mode = on

二、用户组安全

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

因此,建议您将此选项设置为 off:


safe_mode_gid = off
注意:该选项参数仅适用于Linux 操作系统

如果不设置此设置,您可能无法操作服务器网站目录中的文件。

三、安全模式下执行程序主目录

如果您想在启用安全模式后执行一些程序,您可以指定需要执行程序的主目录,例如:


safe_mode_exec_dir = /usr/bin

一般情况下,如果不需要执行任何程序,建议不要指定执行系统程序的目录。您可以指定一个目录,然后将要执行的程序复制到该目录,例如:


safe_mode_exec_dir = /temp/cmd

但是,建议您不要执行任何程序。在这种情况下,只需将执行目录指向 web 目录:


safe_mode_exec_dir = /usr/www 

注意:执行目录的路径基于您的实际操作系统目录路径。

四,包括安全模式下的文件

如果需要在安全模式下包含一些公共文件,只需修改以下选项:


safe_mode_include_dir = /usr/www/include/

一般来说,PHP 脚本中包含的文件都是写在程序中的,可以根据你的具体需求进行设置。

五、控制 PHP 脚本可以访问的目录。

使用 open_basedir 选项可以控制 PHP 脚本只能访问指定的目录,这样可以防止 PHP 脚本访问不应该访问的文件,一定程度上减少 phpshell的危害。通常,您可以将其设置为仅访问网站目录:


open_basedir = /usr/www

六、关闭危险功能

如果启用安全模式,则不需要设置功能禁止,但出于安全考虑,建议您设置。例如,如果您不想执行执行命令的 PHP 函数,包括 system()和可以查看 PHP 信息的 phpinfo()等函数,可以通过以下设置禁用这些函数:


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

如果要禁止对任何文件和目录的操作,可以关闭以下与文件相关的操作。


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

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

七、关闭 PHP 版本信息在 HTTP 头中的泄露

为了防止黑客获取服务器中的 PHP 版本信息,可以在 HTTP 头中禁止这些信息泄露:


expose_php = off 

在这个设置之后,当黑客试图通过执行 telnet 80 连接到您的服务器时,他们将看不到 PHP 的版本信息。

八、关闭全局变量的注册

PHP 环境下提交的变量,包括使用 POST 或 GET 命令提交的变量,都会自动注册为全局变量,可以直接访问。这对你的服务器非常不安全,所以建议你关闭注册全局变量的选项,禁止提交的变量注册为全局变量。


 register_globals = off

注意:这个选项参数在 PHP 5.3 以后的版本中已经被删除了。

当然,如果设置了这个,就需要采取合理的方式来获取相应的变量。比如获取 GET 命令提交的变量 var,需要使用$ _ get [‘var’]命令获取,设计 PHP 程序时需要注意。

九、SQL 注入保护

SQL 注入是一个非常危险的问题,小到网站后台的入侵,大到整个服务器的沦陷。

默认情况下,magic_quotes_gpc 选项是关闭的。如果打开此选项,PHP 将自动转换用户对 SQL 查询的请求(例如,将’转换为\ ‘等)。),这对防止SQL 注入攻击有很大作用,所以建议您将此选项设置为:


magic_quotes_gpc = on

注意:这个选项参数在 PHP 5.4.0 以后的版本中已经被删除了。

十、错误信息控制

一般 PHP 环境在没有连接到数据库或者其他情况下会有错误提示信息,错误信息中可能包含 PHP 脚本当前的路径信息或者查询的 SQL 语句等信息,这类信息如果暴露给黑客是不安全的,因此建议您禁止该错误提示:


display_errors = Off

如果您确实要显示错误信息,一定要设置显示错误信息的级别。例如,只显示警告以上的错误信息:

error_reporting = E_WARNING & E_ERROR

注意: 强烈建议您关闭错误提示信息。

十一、错误日志

建议您在关闭错误提示信息后,对于错误信息进行记录,便于排查服务器运行异常的原因:


log_errors = On

同时,需要设置错误日志存放的目录,建议您将 PHP 错误日志与 Apache 的日志存放在同一目录下:

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

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

十二、升级 PHP 版本

PHP 新特性很好用。
较之前版本速度提升 2-3 倍。

收藏 (0)

微信扫一扫

支付宝扫一扫

点赞 (0)

免责声明

本资源仅限个人学习与研究使用,严禁用于任何商业用途!

1 网站名称:汇站网
2 永久网址:https://www.huizhanii.com
3 本站资源来源于网友投稿和付费购买,仅供编程人员及源代码爱好者下载参考与研究,不提供任何技术支持服务!
4 资源展示图片及相关信息仅供参考,不代表本站立场!本站仅作为信息存储平台
5 禁止在服务器和虚拟机上搭建运营,所有资源仅限本地调试与研究使用,不支持联网运行!
6 未经版权方授权,严禁用于商业用途。使用者如违反国家法律法规,需自行承担全部法律责任!
7 请在下载后24小时内删除!建议支持正版授权作品
8 如资源侵犯您的合法权益,请提供版权证明及相关作品信息发送至邮箱:972908224@qq.com,我们将及时处理
9 如遇下载链接失效或支付未到账,请联系站长处理
10 欢迎投稿优质源码或教程,审核通过后将获得相应奖励
11 资源收费仅用于维持网站正常运营
12 数字商品具有特殊性质,一经购买概不退款

汇站网 技术分享 如何利用 PHP 的安全模式功能来增强您网站的安全性 https://www.huizhanii.com/34418.html

站长资源下载中心-找源码上汇站

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

联系官方客服

为您解决烦忧 - 24小时在线 专业服务