Linux服务器,PHP的10大安全配置实践
PHP被广泛用于各种Web开发。而当服务器端脚本配置错误时会出现各种问题。现今,大部分Web服务器是基于Linux环境下运行(比如:Ubuntu,Debian等)。本文例举了十大PHP最佳安全实践方式,能够让您轻松、安全配置PHP。
PHP安全性设置提示:
DocumentRoot: /var/www/Default Web server: Apache
Default PHP configuration file: /etc/php.ini
Default PHP extensions config directory: /etc/php.d/
Our sample php security config file: /etc/php.d/security.ini (you need to create this file using a text editor)
Operating systems: Ubuntu (the instructions should work with any other Linux distributions such as RHEL / CentOS / Fedora or other Unix like operating systems such as OpenBSD/FreeBSD/HP-UX).
1. 减少PHP内置模块
为了增强性能和安全性,强烈建议,减少PHP中的模块。来看看下面这个被执行命令安装的模块。
1 # php ?m
你将会得到类似的结果:
你将会得到类似的结果:
[PHP Modules]apc
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
memcache
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
suhosin
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
Suhosin
删除一个模块,并执行此命令。例如:删除模块sqlite3
1 # rm /etc/php.d/sqlite3.ini
或者
1 # mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disableRestrict
2. 使PHP信息泄露最小化
在默认PHP时在HTTP抬头处会生成一条线介于每个响应中,(比如X-Powered-By: PHP/5.2.10)。而这个在系统信息中为攻击者创建了一个非常有价值的信息。
HTTP示例:
1 HTTP/1.1 200 OK2 X-Powered-By: PHP/5.2.103 Content-type: text/html; charset=UTF-84 Vary: Accept-Encoding, Cookie5 X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;string-contains=wikiToken;6 string-contains=wikiLoggedOut;string-contains=wiki_session7 Last-Modified: Thu, 03 Nov 2011 22:32:55 GMT8 ...
因此,我们强烈建议,禁止PHP信息泄露,想要要禁止它,我们要编辑/etc/php.d/secutity.ini,并设置以下指令:
1 expose_php=Off
3. 使PHP加载模块最小化
在默认情况下,RHEL加载的所有模块可以在/etc/php.d/目录中找到。要禁用或启用一个特定的模块,只需要在配置文件/etc /php.d/目录中中注释下模块名称。而为了优化PHP性能和安全性,当你的应用程序需要时,我们强烈建议建议启用扩展功能。举个例子:当禁用GD扩展 时,键入以下命令:
1 # cd /etc/php.d/2 # mv gd.{ini,disable}3 # /etc/init.d/apache2 restart
为了扩展PGP GD模块,然后键入以下命令:
1 # mv gd.{disable,ini}2 # /sbin/service httpd restart
4. 记录PHP错误信息
为了提高系统和Web应用程序的安全,PHP错误信息不能被暴露出。要做到这一点,需要编辑/etc/php.d/security.ini 文件,并设置以下指令:
1 display_errors=Off
为了便于开发者Bug修复,所有PHP的错误信息都应该记录在日志中。
1 log_errors=On2 error_log=/var/log/httpd/php_scripts_error.log
5. 禁用远程执行代码
如果远程执行代码,允许PHP代码从远程检索数据功能,如FTP或Web通过PHP来执行构建功能。比如:file_get_contents()。
很多程序员使用这些功能,从远程通过FTP或是HTTP协议而获得数据。然而,此法在基于PHP应用程序中会造成一个很大的漏洞。由于大部分程序员 在传递用户提供的数据时没有做到适当的过滤功能,打开安全漏洞并且创建了代码时注入了漏洞。要解决此问题,需要禁用_url_fopen in /etc/php.d/security.ini,并设置以下命令:
1 allow_url_fopen=Off
除了这个,我还建议禁用_url_include以提高系统的安全性。
1 allow_url_include=Off
6. 禁用PHP中的危险函数
PHP中有很多危险的内置功能,如果使用不当,它可能使你的系统崩溃。你可以创建一个PHP内置功能列表通过编辑/etc/php.d/security.ini来禁用它。
1 disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
7. 资源控制
为了提高系统的稳定性,强烈建议设置每个脚本解析请求数据所花费的时间和脚本可能消耗的最大内存量。正确的配置这些参数可以防止PHP任何脚本消耗太多的资源或是内存,从而避免系统不安全或降低安全系数。
1 # set in seconds2 max_execution_time = 303 max_input_time = 304 memory_limit = 40M
8. 限制PHP访问文件系统
该open_basedir指令指定的目录是允许PHP访问使用fopen()等功能。如果任何脚本试图访问超出open_basdir定义的路径文件,PHP将拒绝打开。值得注意的是,你不能使用一个符号链接作为一种变通方法。
1 ; Limits the PHP process from accessing files outside2 ; of specifically designated directories such as /var/www/html/3 open_basedir="/var/www/html/"4 ; ------------------------------------5 ; Multiple dirs example6 ; open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/nixcraft.com/html/:/home/httpd/vhost/theos.in/html/"7 ; ------------------------------------
9.限制文件/目录访问
进行适当的安全设置:确保Apache作为非root用户运行,比如www-data或www。对于文件和目录在基于/var/www/下同样属于非root用户。想要更改所有者,执行以下命令:
1 # chown -R apache:apache /var/www/
10.编译保护Apache,PHP和MySQL的配置文件
使用charrt命令编译保护配置文件
1 # chattr +i /etc/php.ini2 # chattr +i /etc/php.d/*3 # chattr +i /etc/my.ini4 # chattr +i /etc/httpd/conf/httpd.conf5 # chattr +i /etc/
使用charrt命令可以编译保护PHP文件或者是文件中的/var/www/html的目录:
1 # chattr +i /var/www/html/file1.php2 # chattr +i /var/www/html/

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

标题:跨服务器文件传输的PHP脚本实现一、简介在跨服务器文件传输中,我们通常需要将文件从一个服务器传输到另一个服务器。本文将介绍如何利用PHP脚本在Linux服务器上实现跨服务器文件传输,并给出具体的代码示例。二、准备工作在开始编写PHP脚本之前,我们需要确保服务器上已经配置好以下环境:安装PHP:在Linux服务器上安装PHP,确保PHP版本符合代码要求。

如何在Linux服务器上部署可信赖的Web接口?简介:在如今信息爆炸的时代,Web应用已经成为了人们获取信息和进行交流的主要途径之一。为了确保用户的隐私安全和信息的可靠性,我们需要在Linux服务器上部署一个可信赖的Web接口。本文将介绍如何在Linux环境下进行Web接口的部署,并提供相关的代码示例。一、安装和配置Linux服务器首先,我们需要准备一个Li

Linux服务器安全:使用命令检查系统漏洞概述:在当今的数字化环境中,服务器安全性是至关重要的。针对已知漏洞进行及时的检测和修复,能够有效地保护服务器免受潜在的攻击威胁。本文将介绍一些常用的命令,可用于在Linux服务器上检查系统漏洞,并提供相关的代码示例。通过正确使用这些命令,您将能够增强服务器的安全性。检查系统更新:在开始进行漏洞检查之前,确保您的系统已

如何优化Linux服务器的性能与资源利用,需要具体代码示例摘要:Linux服务器性能和资源利用的优化是保证服务器运行稳定和高效的关键。本文将介绍一些优化Linux服务器性能和资源利用的方法,并提供具体的代码示例。引言:随着互联网的快速发展,大量的应用和服务都部署在Linux服务器上。为了保证服务器运行的高效稳定,我们需要对服务器进行性能和资源利用优化,以实现

随着互联网技术的发展,越来越多的企业和个人选择使用Linux服务器来托管和管理他们的应用程序和网站。然而,随着服务器的数量增加,服务器故障和安全性问题也成为了一项紧迫的任务。本篇文章将探讨Linux服务器故障的原因以及如何健康地管理和保护系统。首先,让我们来看一下可能导致Linux服务器故障的一些常见原因。首先,硬件故障是最常见的原因之一。例如,服务器过热、

提供更强大的Web接口安全性:Linux服务器的关键实践在当今的数字时代,Web接口安全性变得越来越重要。随着越来越多的应用和服务转移到云端,服务器安全保护也日益成为关键问题。Linux作为最常用的服务器操作系统之一,其安全性的保护至关重要。本文将介绍一些关键实践,帮助您提供更强大的Web接口安全性。更新和维护操作系统和软件及时进行操作系统和软件的更新是服务

Linux服务器安全加固:配置和优化您的系统引言:在当今信息安全威胁日益增加的环境中,保护您的Linux服务器免受恶意攻击和未经授权的访问变得至关重要。为了加固系统安全,您需要采取一系列的安全措施,以保护您的服务器和其中存储的敏感数据。本文将介绍一些关键的配置和优化步骤,以提高您的Linux服务器的安全性。一、更新和管理软件包安装最新的软件包和更新对于保持系

Linux服务器防御:保护Web接口免受恶意文件上传攻击近年来,随着网络的普及和发展,Web应用程序的使用越来越广泛。然而,与之伴随而来的是各种安全威胁,其中之一就是恶意文件上传攻击。恶意文件上传攻击是指攻击者向服务器上传包含恶意代码的文件,从而获取服务器权限或者传播恶意内容。为了保护Web接口免受恶意文件上传攻击,我们可以采取一些有效的防御措施。下面将介绍
