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

相关文章

来自专栏应兆康的专栏

Python Web - Flask笔记10

编写uwsgi配置文件: 在项目的路径下面,创建一个文件叫做yingjoy_uwsgi.ini的文件,然后填写以下代码: [uwsgi] # Djang...

772
来自专栏龙渊阁测试精英

Jmeter(二十三)_插件扩展

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

3273
来自专栏linux驱动个人学习

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

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

1152
来自专栏北京马哥教育

Corosync + Pacemaker 搭建高可用MariaDB服务

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

35210
来自专栏xiaoxi666的专栏

maven插件调试方法

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

741
来自专栏玄魂工作室

Hacker基础之Linux篇:基础Linux命令二

1. mv mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files)。 是Linux系统下常用的命令,经常用来备份文...

34310
来自专栏伦少的博客

centos7 hadoop 单机模式安装配置

转载请务必注明原创地址为:http://dongkelun.com/2018/03/23/hadoopConf/

47411
来自专栏lgp20151222

consul怎么在windows下安装

1.去官网下载:https://www.consul.io/downloads.html 2.解压:

714
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Apache Tomcat 8

Apache Tomcat是一个Web服务器和servlet容器,用于为Java应用程序提供服务。Tomcat是Apache Software Foundati...

1242
来自专栏网络

JavaEE——jsp介绍

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

2227

扫码关注云+社区