转载:http://www.kubiji.cn/juhe-id4960.html
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应用程序方面的安全。要是你认为我们遗漏了重要的内容,欢迎留言补充。
原文标题:Top 10 PHP Security Tips for Linux Admins,作者:Damian Wolf
转自:
http://www.kubiji.cn/juhe-id4960.html
分享到:
相关推荐
以上就是通过PHP脚本修改Linux或Unix系统口令的基本流程和安全要点。在实施此类操作时,必须充分考虑系统的安全性,遵循最佳实践,确保不会引入新的安全隐患。此外,对于更深入的PHP编程安全知识,可以查阅专门的...
在Linux领域中,商业智能(BI)软件的重要性日益凸显,成为企业信息化管理不可或缺的一环。随着市场对数据分析和决策支持需求的不断增长,和勤软件有限公司应时而出,推出了专为Linux环境打造的新一代商业智能软件...
PHP的安装在搭建过程中并未详细说明,但它是构建动态网站和论坛所不可或缺的一部分。通常PHP也是通过源码编译安装,并且在配置Nginx时,需要指定PHP的配置文件路径。 最后,搭建Discuz论坛实际上是一个软件部署的...
在Linux环境下使用PHP进行文件上传时,需要注意多个关键点...了解以上要点,你将能够更好地在Linux环境中使用PHP处理文件上传,并确保过程的安全性和稳定性。在实践中,务必兼顾安全和效率,根据实际需求灵活调整策略。
在这一章节中,作者分享了自己作为Linux高手的经验与技巧,帮助读者快速掌握Linux的核心概念和技术要点。 #### Linux学习方法论——为您学习Linux指明方向 该部分提供了学习Linux的有效策略,包括如何安排学习计划...
根据提供的文件信息,我们可以总结出一系列关于Linux操作系统的关键知识点,特别是针对高级用户的特性和使用方法。下面的内容将围绕这些要点进行展开。 ### Linux系统的主要特性 1. **分时的多用户、多任务的操作...
本书还介绍了与嵌入式Linux相关的资源,包括O'Reilly出版的其他Linux相关书籍,如《设计嵌入式硬件》、《Linux设备驱动程序》、《Linux命令行大全》、《Linux网络管理员指南》、《编程嵌入式系统》、《运行Linux》和...
同时,与MySQL或PostgreSQL等数据库的交互也是必不可少的,包括创建数据库、数据表,以及执行SQL查询。 4. **网站部署与版本控制**:学会使用Git进行版本控制,可以确保代码的安全和团队协作。理解如何将本地开发...
金融投资网站涉及用户资金安全,因此,安全措施是不可忽视的。项目中可能采取了如下措施:1) 使用HTTPS协议进行数据传输,确保通信过程中的数据加密;2) 输入验证,防止SQL注入和XSS攻击;3) 对敏感操作进行二次确认...
- 会员信息系统是CMS平台必不可少的功能之一,涉及到用户注册、登录、个人信息管理等多个方面。 - 本节内容着重介绍了如何通过PHP实现会员信息的增删改查功能,并对数据安全性进行保障。 #### 5. CMS内容管理系统-...
1. **系统性**: 千峰教育的PHP培训课程涵盖了PHP的基础知识到高级应用,包括但不限于PHP语法、数据库操作、面向对象编程等。 2. **实战性强**: 课程设计中融入了大量的实践案例和项目开发经验,学员可以在实际操作...
描述中提到了流程控制,是编程语言中不可或缺的部分,PHP的流程控制包括: 1. **if...else**:用于根据条件执行不同代码块。`if`后面跟条件表达式,如果为真,则执行相应的代码块。可选地,可以加上`else`来定义...
网络通信的可靠性和安全性也是不可忽视的关键因素,特别是在户外或工业环境中,保证数据传输的稳定与安全尤为重要。 综上所述,本文通过设计并实现了一个基于嵌入式Linux的无线传感器网络汇聚节点,有效解决了无线...
本文档总结了Linux学习的要点,涵盖了Linux基础知识、命令操作、文件系统、桌面环境、服务器安装等方面的知识点。 一、Linux基础知识 1. 文本模式密码不显示输入的字符,输入的密码不会出现星号或其他符号,以保护...
确保计算机已安装操作系统,并具备管理员权限。 **3. PHP的安装和配置** - 下载PHP安装包,按照提示安装。 - 配置php.ini文件,根据需要调整配置项。 - 在Apache配置文件中添加PHP模块的加载指令。 **4. Apache的...
对于PHP5.3.3,务必选择`php-5.3.3-Win32-VC6-x86`版本,而非`php-5.3.3-nts-Win32-VC6-x86`或任何VC9版本,因为后者专为IIS服务器设计,不适用于Apache服务器配置。 #### 第二步:安装过程与目录结构 安装流程...
支持三种管理权限:教师、管理员、超级管理员。用于三种不同分工 后台首页仪表盘,全面快速了解网校的运营、收入情况 简洁的内容管理,通过页面、导航、编辑区有效的组织网站 各种模版选择和定制,让网站独具特色! ...
- **GET方法**:通过URL传递参数,适用于安全性要求不高的场景。 - **POST方法**:通过HTTP POST请求传递参数,适用于传输敏感数据。 - **$_GET[]**:获取GET方法传递的参数。 - **$_POST[]**:获取POST方法传递的...