0

0

推荐Linux管理员不可不知十大PHP安全要点

巴扎黑

巴扎黑

发布时间:2016-12-28 17:48:34

|

1325人浏览过

|

来源于php中文网

原创

php是使用最广泛的脚本编程语言之一。市场份额颇能说明其主导地位。php 7已推出,这个事实让这种编程语言对当前的开发人员来说更具吸引力。尽管出现了一些变化,但是许多开发人员对php的未来持怀疑态度。一个原因是php的安全。 

linux管理员不可不知十大php安全要点 
php是使用最广泛的脚本编程语言之一。市场份额颇能说明其主导地位。php 7已推出,这个事实让这种编程语言对当前的开发人员来说更具吸引力。尽管出现了一些变化,但是许多开发人员对php的未来持怀疑态度。一个原因是php的安全。 

php的安全是广大开发人员担心的主要问题。虽然php提供从里到外的可靠安全,但是需要由开发人员正确地落实这些安全机制。我们在本文中将为linux管理员介绍几个php安全要点。这些要点将帮助你确保web应用程序安全,并确保从长远来看正常运行。 

在我们开始之前,有必要了解一下我们所要处理的系统。出于演示的需要,我们使用fedora。然而,这些要点应该适用于ubuntu版本或其他任何linux发行版。查看你操作系统发行版的使用手册,即可了解更多信息。 

不妨仔细看一下我们系统环境的几个关键文件。你的文件应该类似或对应于下列: 

默认的web服务器:apache 

documentroot:/var/www/html 

php配置文件:/etc/php.ini 

扩展配置目录:/etc/php.d/ 

安全文件:/etc/php.d/security.ini 

这些技巧将保护你的网站,避免不同类型的常见攻击,比如sql注入、xss、跨站请求伪造攻击、eval()和文件上传等攻击。可在此(https://www.sitepoint.com/top-10-php-security-vulnerabilities/)查看常见攻击列表。 

1. 删除不必要的模块。 

php随带内置的php模块。它们对许多任务来说很有用,但是不是每个项目都需要它们。只要输入下面这个命令,就可以查看可用的php模块: 

# php - m 

一旦你查看了列表,现在可以删除不必要的模块。减少模块的数量有助于提高你所处理的web应用程序的性能和安全。 

2. 限制php信息泄露。 

平台泄露关键信息司空见惯。比如说,php会泄露一些信息,比如版本以及它安装到服务器上的事实。这可以通过expose_php命令来实现。为了防止泄露,你需要在/etc/php.d/security.ini中将该命令设成off。 

expose_php=off 

如果你需要了解版本及其状态,只要针对网站地址运行一个简单的curl命令就可以获得该信息。 

curl - i http://www.kubiji.cn/index.php 

之前的命令会返回下列信息: 

http/1.1 200 ok 

x-powered-by: php/7.0.10  

content-type: text/html; charset=utf-8 

3. 禁用远程代码执行。 

远程代码执行是php安全系统方面的常见安全漏洞之一。默认情况下,远程代码执行在你的系统上已被启用。“allow_url_fopen”命令允许请求(require)、包括(include)或可识别url的fopen包装器等函数可以直接访问php文件。远程访问通过使用http或ftp协议来实现,会导致系统无力防御代码注入安全漏洞。 

为了确保你的系统安全可靠、远离远程代码执行,你可以将该命令设成“off”,如下所示: 

allow_url_fopen=off  

allow_url_include=off 

4. 将php错误记入日志。 

加强web应用程序安全的另一个简单方法就是,不向访客显示错误。这将确保黑客根本无法危及网站的安全性。需要在/etc/php.d/security.ini文件里面进行编辑。 

display_errors=off 

现在你可能会想:完成这一步后,“开发人员在没有错误信息的帮助下如何调试?”开发人员可以使用log_errors命令来用于调试。他们只需要在security.ini文件中将log_errors命令设成“on”。 

log_errors=on  

error_log=/var/log/httpd/php_scripts_error.log 

5. 合理控制资源。 

为了确保应用程序的安全,控制资源很重要。为了确保适当的执行和安全,你就要对php脚本执行予以限制。此外,还应该对花在解析请求数据上的时间予以限制。如果执行时间受到控制,脚本使用的内存等其他资源也应该会得到相应配置。所有这些度量指标可通过编辑security.ini文件来加以管理。 

# set in seconds  

max_execution_time = 25  

max_input_time = 25  

memory_limit = 30m 

6. 禁用危险的php函数 

php随带用于开发的实用函数,但是也有可能被黑客用来闯入web应用程序的大量函数。禁用这些函数可以提高总体安全性,并确保你没有受到危险的php函数的影响。 

为此,你先要编辑php.ini文件。一旦进入该文件,找到disable_functions命令,禁用里面的危险函数。为此,你只要拷贝/粘贴下列代码。 

disable_functions =exec,passthru,  

shell_exec,system,proc_open,popen,curl_exec,  

curl_multi_exec,parse_ini_file,show_source 

你可以在此(https://www.eukhost.com/blog/webhosting/dangerous-php-functions-must-be-disabled/)进一步了解禁用危险的php函数。 

7. 上传文件。 

如果你的应用程序不需要上传任何文件,禁用上传文件的功能有助于提高安全。想禁止用户上传文件,只需要编辑/etc/php.d/目录下的security.ini文件,将file_uploads命令设成off。 

file_uploads=off 

8. 保持版本最新。 

开发人员在24/7不间断地工作,给你使用的技术打上补丁。php也是一样。由于它有一个开源社区,补丁和修正版定期发布。更新版还为首日漏洞及其他安全漏洞提供了安全补丁。如果你注重应用程序的安全性,就要始终确保你的php解决方案是最新版本。另外,给其他相关技术打上最新的补丁可以确保最大限度的安全。 

9.控制文件系统访问。 

默认情况下,php可使用fopen()等函数来访问文件。open_basedir命令提供了访问。首先,始终要将open_basedir命令设成/var/www/html目录。将它设成其他任何目录会导致安全问题。 

open_basedir="/var/www/html/" 

10. 控制post大小。 

我们的最后一个php安全要点是控制post大小函数。http post函数使用客户端的浏览器,将数据发送到web服务器。比如说,用户可能上传证书,然后发送到web浏览器以便处理。一切都运行顺畅,直到有一天黑客企图发送庞大的文件来耗尽服务器资源。这很可能会导致服务器崩溃或响应缓慢。为了保护服务器远离这个漏洞,就需要设置post大小。post大小可以在/etc/php.d/security.ini文件里面加以设置。 

post_max_size=1k 

结束语 

安全是广大web开发人员和linux管理员最关注的问题之一。如果采取了上述要点,你势必可以加强开发环境和php web应用程序方面的安全。要是你认为我们遗漏了重要的内容,欢迎留言补充。

芝麻乐开源众筹cms系统
芝麻乐开源众筹cms系统

芝麻乐开源众筹系统采用php+mysql开发,基于MVC开发,适用于各类互联网金融公司使用,程序具备模板分离技术,您可以根据您的需要进行应用扩展来达到更加强大功能。前端使用pintuer、jquery、layer等....系统易于使用和扩展简单的安装和升级向导多重业务逻辑判断,预防出现bug后台图表数据方式,一目了然后台包含但不限于以下功能:用户认证角色管理节点管理管理员管理上传配置支付配置短信平

下载

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 10.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号