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 条评论
登录 后参与评论

相关文章

来自专栏网络

JavaEE——jsp介绍

jsp介绍: jsp全称Java Server Page,它是Servlet的扩展,其作用就是简化网站创建过程和维护动态网站。 jsp运作原理: 浏览器访问in...

2647
来自专栏bdcn

Supervisord安装配置笔记 原

想要了解怎么配置需要管理的进程,只要打开 supervisord.conf 就可以了,里面有很详细的注释信息。

1944
来自专栏Android开发实战

Gradle自定义插件详解

开发Gradle插件可以在IDEA中进行开发,也可以在Android Studio中进行开发,它们唯一的不同,就是IDEA提供了Gradle开发的插件,比较方...

1062
来自专栏散尽浮华

sudo命令使用的几个场景

在linux系统下,普通用户无法直接执行root用户权限下的命令,如果想让普通用户执行只有root用户才能执行的操作命令。 下面罗列下经常使用sudo命令的几个...

2415
来自专栏吴伟祥

Linux 系统启动过程 原

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

1482
来自专栏测试驿栈

Jmeter(二十三)_插件扩展

安装插件的方法有两种,一种是传统的方式,即官网下载,本地配置,重启jmeter。现在有一种快捷的方法可以自定义安装插件-插件管理器

1.1K3
来自专栏linux驱动个人学习

Linux下的进程类别(内核线程、轻量级进程和用户进程)--Linux进程的管理与调度(四)

虽然我们在区分Linux进程类别, 但是我还是想说Linux下只有一种类型的进程,那就是task_struct,当然我也想说linux其实也没有线程的概念, 只...

2362
来自专栏北京马哥教育

Corosync + Pacemaker 搭建高可用MariaDB服务

实验描述 本实验的目的是为了通过手动配置corosync配置文件,实现MariaDB服务的高可用,集群心跳传递使用组播方式。 三个节点的主机名分别为:node5...

44110
来自专栏技术博文

php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)

虽然通过nginx accesslog可以记录用户访问某个接口或者网页所消耗的时间,但是不能清晰地追踪到具体哪个位置或者说函数慢,所以通过php-fpm慢日志,...

46010
来自专栏xiaoxi666的专栏

maven插件调试方法

以IntelliJ IDEA为例,通常我们调试maven项目时,都是直接点击调试按钮即可。但maven编写的插件就不同了,由于插件需要打包成Jar加载到项目中,...

2071

扫码关注云+社区

领取腾讯云代金券