这样设置php,让你的系统更安全

admin 2022年4月29日18:48:38评论116 views字数 2460阅读8分12秒阅读模式

点击蓝字

关注我们


1


屏蔽错误信息显示

错误日志显示,可能会暴露服务端的WebServer、数据库、PHP代码部署路径、数据库连接、数据表等关键信息,所以要屏蔽掉PHP错误信息!

配置文件中设置 

display_errors=On,则是开启了PHP错误显示,在PHP程序遇到错误时,就会被打印在页面上。

这样设置php,让你的系统更安全

修改方式:

在配置文件php.ini中添加如下代码:

;http://php.net/display-errors

Error_reporting=E_ALL&~E_NOTICE&~E_STRICT&~E_DEPRECATED

上行代码的意思是,报告所有的错误,但除了E_NOTICE、E_STRICT和E_DEPRECATED这三种。

E_NOTICE:报告通知类错误,脚本可能会产生错误。

E_STRICT:启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。

E_DEPRECATED:运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。

这样设置php,让你的系统更安全

2

防止版本号暴露

在默认配置下,PHP版本号显示是开启状态,expose_php设置值为On,默认将PHP的版本号返回到HTTP请求的头部信息中,如下图所示:

这样设置php,让你的系统更安全

3

防止全局变量覆盖

register_globals = On

当这个配置选项打开之后,可导致下面代码中的 $authorized变量被覆盖,无需认证用户名和密码就可以直接设置authorized的值为true,跳过认证进入登录状态。

这样设置php,让你的系统更安全

4

文件系统限制

通过配置open_basedir来限制PHP访问文件系统的位置,将PHP执行权限限制在特定目录下。当访问的文件在该特定目录外,PHP将拒绝访问。

开启open_basedir可以有效的对抗文件包含、目录遍历等攻击,防止攻击者访问非授权目录文件。

open_basedir = /home/web/php/

限定PHP的访问目录为

/home/web/php/

5

远程访问限制

allow_url_fopen = On

当PHP的远程访问选项allow_url_fopen开启时,允许PHP系统拥有从远程检索数据的功能,如通过PHP来访问远程FTP或Web,并使用file_get_contents()方法访问远程数据。

修改如下:

allow_url_fopen = Off //禁用PHP远程URL访问

allow_url_include = Off //禁用远程INCLUDE文件包含

开启安全模式

safe_mode=On //开启安全模式

safe_mode_gid=Off

开启后,主要会对系统操作、文件、权限设置等方法产生影响,减少被攻击者植入webshell所带来的某些安全文件,从而在一定程度上避免一些未知的攻击。

缺点是会对许多PHP函数进行限制,特别是与系统相关的文件打开、命令执行等函数,所有操作文件的函数将只能操作与脚本UID相同的文件,所有命令执行的函数将被限制只能执行php.ini里的

safe_mode_exec_dir

指定目录里的程序,例如使用shell_exec(),exec()等函数执行命令的方式将会被禁止。

6

关闭COM组件

在Windows环境中,PHP中的COM()函数可以创建系统组件对象来运行系统命令。

修改配置文件中参数:

com.allow_dcom=false

同时删除在php/ext/里面的文件:

php_com_dotnet.dll

防止被恶意利用。

7

禁用危险函数

配置文件中的

disable_functions选项能够禁用PHP中指定的函数。

例如:

disable_functions=phpinfo,eval,exec,system……等等

phpinfo():显示php服务器的配置信息

eval():把字符串按照 PHP 代码来计算。

exec():用于执行一个外部程序。

system():执行外部程序并显示输出。

还用一些不常用到的函数,如proc_open(),pcntl_exec()等等,任何一个可执行的函数都可能为攻击者所利用。

除了以上这些已经列举出来的函数,在实际运用中,攻击者的手段更是千变万化,层出不穷。

譬如几年前在俄罗斯Antichat论坛上公布的一个新的方法,用来绕过disable_functions的安全机制。

在PHP上安装imap拓展后,将会激活函数imap_open,利用它的参数mailbox的不安全性,在设置SSH连接时,mailbox参数的值会以参数的形式传递给SSH命令。

输入命令:

ssh - oProxyCommand=”touch tmp.txt” localhost

当执行这条命令时,即使没有建立与localhost的SSH连接,依然会创建tmp.txt文件。

为了避免攻击者绕过disable_functions选项,可以在php.ini配置文件中将imap.enable_insecure_rsh选项的值设置为0,或者将imap_open函数也添加到禁用函数列表中。


总结:

完成以上配置,你的系统的安全性将会大大提升,但是作为安全人员,我们还需要与时俱进的去了解最新的攻击方法,才能防患于未然。

这样设置php,让你的系统更安全

       银天信息专注于软件研发、信息安全与智慧城市等领域的创新发展,是政府及企业数字化、智慧化建设的重要合作伙伴,银天信息立足”为社会服好务、为员工谋福祉”的社会责任,秉承“以技术为引领、以市场为导向、以用户为中心”的发展理念。

       自1996年成立以来,银天信息以产业前瞻研究和行业深度理解为双引擎,基于云计算、大数据、物联网、5G等先进技术形成了贯穿政府、企业数字化转型生命周期的“全栈式”产品及解决方案,包括IT战略咨询、规划、设计、实施、运营与商业模式创新等,为用户输出同步国际的智慧城市建设体系,实现IT云化和数据价值激活,提升整体核心竞争力。目前,已经与政府、教育、能源、金融、电信、医疗等行业客户开展深入的合作。

这样设置php,让你的系统更安全

  编辑  | 田韵琦

  设计  | 周晶晶

    校对  | 李祖胜  

 

这样设置php,让你的系统更安全


原文始发于微信公众号(银天信息):这样设置php,让你的系统更安全

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月29日18:48:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   这样设置php,让你的系统更安全http://cn-sec.com/archives/962926.html

发表评论

匿名网友 填写信息