PHP安全配置小技巧

1.软件版本:PHP版本应该从PHP官方提供的下载页面下载,注意不要下载beta版本。

PHP官网下载地址为:http://www.php.net/downloads.php

2.控制脚本访问权限:PHP默认配置允许php脚本程序访问服务器上的任意文件,为避免php脚本访问不该访问的文件,从一定程度上限制了php木马的危害,需设置php只能访问网站目录或者其他必须可访问的目录。

/usr/local/apache2/web/为网站根目录,打开php.ini,安全加固配置方式如下:

open_basedir = /usr/local/apache2/web/

需要多个目录时,以冒号隔开如:

open_basedir = /usr/local/apache2/web/:/tmp/:/data/adc/

3.禁止使用的PHP危险函数:Web木马程序通常利用php的特殊函数执行系统命令,查询任意目录文件,增加修改删除文件等。php木马程序常使用的函数为:dl,assert,exec,popen,system,passthru,shell_exec等。

打开php.ini,安全加固配置方式如下,禁止使用这些危险函数:

disable_functions = dl,assert,exec,popen,system,passthru,shell_exec,proc_close,proc_open,pcntl_exec

4.关闭注册全局变量:在PHP中提交的变量,包括使用POST或者GET提交的变量,会自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以不能让它注册为全局变量,就把注册全局变量选项关闭。

打开php.ini,安全加固配置方式如下,关闭注册全局变量设置:

register_globals = Off

注:默认php配置文件该选项是关闭的。

PHP 5.3.*与5.4.*中已被移除。

5.开启magic_quotes_gpc:magic_quotes_gpc会把引用的数据中包含单引号'和双引号"以及反斜线 \自动加上反斜线,自动转译符号,确保数据操作的正确运行,magic_quotes_gpc的设定值将会影响通过Get/Post/Cookies获得的数据,可以有效的防止SQL注入漏洞。

打开php.ini,安全加固配置方式如下,打开magic_quotes_gpc设置:

magic_quotes_gpc = On

注:PHP5.3.*与5.4.*中已被移除。

6. 关闭错误消息显示:php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以服务器建议禁止错误提示。

打开php.ini,安全加固配置方式如下,关闭错误信息显示设置:

display_errors = Off

7.开启错误日志记录:在关闭display_errors后能够把错误信息记录下来,便于查找服务器运行的原因,同时也要设置错误日志存放的目录,建议跟webserver的日志放在一起。

打开php.ini,安全加固配置方式如下,打开错误日志记录并设置错误日志存放路径:

log_errors = Onerror_log = /usr/local/apache2/logs/php_error.log

注:该文件必须允许webserver的用户和组具有写的权限

8.禁止访问远程文件:允许访问URL远程资源使得PHP应用程序的漏洞变得更加容易被利用,php脚本若存在远程文件包含漏洞可以让攻击者直接获取网站权限及上传web木马,一般会在php配置文件中关闭该功能,若需要访问远程服务器建议采用其他方式如libcurl库。

打开php.ini,安全加固配置方式如下,禁止访问远程文件:

allow_url_fopen = Offallow_url_include = Off

9.开启php安全模式:php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的读取。

打开php.ini,开启safe_mode:

safe_mode = On

注:如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:safe_mode_exec_dir = D:/usr/bin

PHP 5.3.*与5.4.*中已被移除。

10.nginx文件解析漏洞防御:如果webserver为nginx, 则须在PHP的配置文件php.ini中配置cgi.fix_pathinfo = 0,防止nginx文件解析漏洞。

原文发布于微信公众号 - 腾讯云安全(TencentCloudSecurity)

原文发表时间:2014-07-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(十三)— PM2

简介   PM2   pm2是一个内置负载均衡的node.js应用进程管理器(也支持Windows),其它的类似功能也有不少,但是感觉pm2功能更强,更值的推荐...

1967
来自专栏农夫安全

Knock 子域名扫描工具

Knock是一款Python编写的工具,通过单词列表来枚举目标域上的子域。扫描DNS区域传输,并尝试绕过通配DNS记录。再最新版本中knockpy支持查询Vir...

1283
来自专栏人工智能头条

数据科学家必知的21个命令

821
来自专栏weixuqin 的专栏

一些杂想(服务器篇)

582

创建您的第一本Chef Cookbook

Cookbook是Chef框架的关键组成部分之一,其描述了相关节点的所需状态,并允许Chef推送需达到该状态的更改数据。由于需要进行配置的选项和区域数量众多,第...

1095
来自专栏吴伟祥

Linux 文件类型+目录结构+常用命令(二)

1、/- 根 每一个文件和目录从根目录开始。 只有root用户具有该目录下的写权限。请注意,/root是root用户的主目录,这与/.不一样

1516
来自专栏容器云生态

根据红帽RHEL7官方文档对centos7进行技术剖析(一)

序言:红帽7教学环境介绍 rht-vmctl命令介绍; $ rht-vmctl start desktop     启动desktop虚拟机 $ rht-vmc...

2326
来自专栏ytkah

dedecms数据库表前缀不一样怎么还原数据

  我们在用dedecms建站时,安装一般都“下一步”直接往下点,这样默认的表前缀是dede_,如果我们要还原从其他地方拷贝过来的数据,一定要注意表头是否一致。...

36011
来自专栏编程

一篇文章让你快速学习Python编程自动化开发学习9-paramiko模块

第三方库的安装 下面要讲的paramiko是一个第三方库。这是第一次使用到第三方库,要使用第三方库需要先进行安装。不过现在安装过程比较简单,一条命令便可以完成库...

17810
来自专栏康怀帅的专栏

CoreOS 配置工具 Ignition 官方示例

CoreOS 配置工具已由 Ignition 代替 cloud-config。 GitHub:https://github.com/coreos/ignitio...

4125

扫码关注云+社区