search
HomeBackend DevelopmentPHP TutorialLinux服务器,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/

 

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Linux服务器的SSH连接断开问题如何解决?Linux服务器的SSH连接断开问题如何解决?Jun 30, 2023 pm 08:27 PM

如何解决Linux服务器上的SSH连接中断问题随着云计算和远程工作的普及,远程连接到Linux服务器成为了日常工作中不可或缺的一部分。然而,有时SSH连接可能会出现中断的情况,给我们带来不便和困扰。本文将分享一些解决Linux服务器上SSH连接中断问题的方法,帮助您更好地管理和维护服务器。一、网络问题首先,我们需要排除网络问题。网络稳定与否直接影响到SSH连

如何解决Linux服务器上的SSH连接中断和拒绝问题如何解决Linux服务器上的SSH连接中断和拒绝问题Jun 29, 2023 am 09:02 AM

如何解决Linux服务器上的SSH连接中断和拒绝问题在日常的运维工作中,使用SSH(SecureShell)进行远程连接是非常常见的操作。尽管SSH是一种安全可靠的协议,但有时仍然会遇到连接中断和拒绝的问题。这些问题可能由于各种原因引起,本文将介绍一些常见的解决方法。检查网络连接首先,确认服务器和本地机器之间的网络连接是否正常。可以通过ping命令来测试服

想在 Windows 11 上安装 AlmaLinux?这是怎么做的想在 Windows 11 上安装 AlmaLinux?这是怎么做的Apr 30, 2023 pm 08:13 PM

在MicrosoftStore中,现在有一个版本的AlmaLinux与适用于Linux的Windows子系统兼容。这为用户提供了一系列令人印象深刻的新选项,因此我们将向您展示如何在Windows11上安装AlmaLinux。它于2021年3月发布,提供了第一个稳定的生产版本,此后该非营利基金会增加了许多新成员。最近的AMD是上个月加入的,时间是2022年3月。借助适用于Linux的Windows子系统,在Windows和Linux世界中工作的开

Linux服务器安全:使用命令检查系统漏洞Linux服务器安全:使用命令检查系统漏洞Sep 08, 2023 pm 03:39 PM

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

提供更强大的Web接口安全性:Linux服务器的关键实践。提供更强大的Web接口安全性:Linux服务器的关键实践。Sep 08, 2023 pm 12:51 PM

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

Linux服务器上常见的日志文件损坏问题及其修复方法Linux服务器上常见的日志文件损坏问题及其修复方法Jun 29, 2023 pm 06:00 PM

Linux服务器上常见的日志文件损坏问题及其修复方法摘要:日志文件是Linux服务器中非常重要的组成部分,它记录了系统运行过程中的各种操作和事件。然而,由于各种原因,日志文件有时会出现损坏问题,导致服务器无法正常分析和调试。本文将探讨一些常见的日志文件损坏问题,并提供相应的解决方法。引言:在Linux服务器运行过程中,日志文件扮演着至关重要的角色。它们记录了

Linux服务器安全加固:配置和优化您的系统Linux服务器安全加固:配置和优化您的系统Sep 08, 2023 pm 03:19 PM

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

Linux服务器防御:保护Web接口免受恶意文件上传攻击。Linux服务器防御:保护Web接口免受恶意文件上传攻击。Sep 09, 2023 am 09:06 AM

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

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment