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

关注安全
0 265

###在配置文件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:运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。

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

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

open_basedir = /home/web/php/

限定PHP的访问目录为

/home/web/php/

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所带来的某些安全文件,从而在一定程度上避免一些未知的攻击。

配置文件中的

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函数也添加到禁用函数列表中。