Linux下PHP+Apache的26个必知的安全设置

PHP是一种开源服务器端脚本语言,应用很广泛。Apache web服务器提供了这种便利:通过HTTP或HTTPS协议,访问文件和内容。配置不当的服务器端脚本语言会带来各种各样的问题。所以,使用php时要小心。以下是Linux下PHP+Apache的26个PHP程序员必知的安全方面的设置

为PHP安全提示而提供的示例环境

文件根目录(DocumentRoot):/var/www/html

默认的Web服务器:Apache(可以使用Lighttpd或Nginx来取代Apache)

默认的PHP配置文件:/etc/php.ini

默认的PHP加载模块配置目录:/etc/php.d/

我们的示例php安全配置文件:/etc/php.d/security.ini(需要使用文本编辑器来创建该文件)

操作系统:RHEL/CentOS/FedoraLinux(相关指令应该与Debian/Ubuntu等其他任何Linux发行版或者OpenBSD/FreeBSD/HP-UX等其他类似Unix的操作系统兼容)。

默认的php服务器TCP/UDP端口:无

为本文所列的大多数操作编写代码时,假定它们将由运行bash外壳程序或其他任何现代外壳程序的根用户来执行:

$ php -v

示例输出:

PHP 5.3.3 (cli) (built: Oct 24 2011 08:35:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

出于演示的用途,我会使用以下操作系统:

$cat/etc/redhat-release

示例输出:

Red HatEnterprise Linux Server release 6.1 (Santiago)

第1个设置项:了解你的对手

基于PHP的应用程序面临不同类型的攻击。我注意到了几种不同类型的攻击:

XSS:跨站脚本是Web PHP应用程序中的一种安全漏洞,攻击者可以利用该漏洞来窃取用户的信息。你可以配置Apache,编写更安全的PHP脚本(验证所有的用户输入),以避免XSS攻击。

SQL注入攻击:这是PHP应用程序的数据库层中的安全漏洞。用户输入不正确地过滤时,应用程序就能执行任何SQL语句。你可以配置Apache,编写安全代码(验证和转换所有的用户输入),以避免SQL注入攻击。PHP中的一个常见做法是,在发送SQL查询之前,使用名为mysql_real_escape_string()的函数,转换参数。

文件上传:它让访客可以将文件放在(将文件上传到)你的服务器上。这会带来众多安全问题,比如删除你的文件、删除数据库、获取用户详细资料,不一而足。你可以使用php来禁用文件上传,或编写安全代码(比如验证用户输入,只允许PNG或GIF等图像文件类型)。

添加本地和远程文件:攻击者可以从远程服务器打开文件,执行任何PHP代码。这让他们得以上传文件、删除文件和安装后门。可以配置php以禁用远程文件执行功能。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5093.html