【IT专家网独家】LAMP是一个基于Linux、Apache、MySQL、PHP的开源Web开发平台,有时也将它作为Perl或Python替代性编程语言。Apache HTTP服务器拥有极大的安全性,至少在它运行在Linux或任何Unix类的操作系统上的时候是这样。不过简单的静态只读Web站点面临着各种危险;如今人们更多地开发动态的Web站点,这是否代表着一种进步呢?
对于笔者而言,更喜欢过去那种简单的静态的HTML,因为即使浏览器的支持和站点质量像现在一样存在着问题,至少它们并没有因为运行那些臃肿的、低效的、错误百出的脚本而使系统陷于停顿甚至锁死整个系统。随着Linux的普及,我们再也不能对其安全自鸣得意了。
由于Linux发行版本,如XAMMP和Ubuntu等,也由于PHP脚本语言的极大流行,现在安装一个LAMP并在一个晚上就建立一个动态的Web站点已经相当容易了。不过这种简易性并不一定是一件好事。任何一个Web管理人员都需要花点时间和能源来彻底地学习其LAMP。任何一个暴露在互联网下的服务器都需要对安全的额外关注,而动态的Web服务器尤甚,因为其更为复杂,其附带的损害更严重。
近期有组织的犯罪对计算机的漏洞利用呈上升趋势,而恶意软件也仅是作为一个欺诈和窃取的途径而已。现在,它们进入你的系统一般并不是为了破坏,而是悄悄地窃取数据并将你的系统与世界范围内的僵尸网络联系起来。
你可以采取的最重要一步是不要使用PHP。在你扔掉这个“烂苹果” 之前,请继续读下去。
一、PHP=烦恼
PHP(超文本预处理程序)是LAMP不安全链条中的罪魁祸首。它相对年轻,诞生于1997年,且仍在发展。PHP的问题分为三个方面:固有的缺陷、不健全的编码器、站点不打补丁或升级PHP。
如果我们揭开PHP的盖头,发现的将不会是一个美人。它充满了混乱和不谐调的因素。其命名约定、语法、大小写敏感性都有矛盾。其内置函数基本上多余,相关文档资料少得可怜,因此你并不能确定哪一个函数的具体作用是什么。
PHP看起来易于学习。在某种程度上,你可以在几小时内学会建立一个动态的Web站点。不过,要明确它的不安全因素并学会如何避免之可能要花费几年的时间。最常见的安全漏洞之一是非确认的输入—即所有的用户输入必须是不可信任的,不过PHP在这方面并没有什么得力的工具,因此你不得不编写自己的验证例程。
在运用Apache的mod_php并以一个Apache模块的形式运行时,PHP继承了Apache进程的所有证书。因此,Apache可读写的全部内容也就是PHP可读写的内容,这也就意味着一次成功的PHP漏洞利用会直接导入到Apache中以及它所涉及到的所有内容。在一个简单站点上以单一用户运行mod_php没有什么问题,不过在一个共享的系统上以多用户运行它这简直就是一场噩梦,因为所有的脚本都运行在同样的Apache用户之下。一个可选方案是在suEXEC 或CGIWrap下运行PHP。这二者在一些健全的脚本语言下也可很好地运行,如Perl,Pythlon,Ruby。
现在有数不清的站点仍在运行PHP3和PHP4,还有更多的站点从来没有打过安全补丁或进行程序的缺陷修正。PHP5早在2004年就已发布,而PHP3在1998年发布。是的,这有点儿愚蠢甚至不安全,不过更新到更新的PHP版本几乎总是需要重大的代码重写。更可笑的是Apache、PHP、MySQL总是冲突;你不得不同时使用恰当的、兼容的版本,否则它们就不能一起运行。对于简易的全新的安装,我们有很多选择,如XAMMP 和Ubuntu的 LAMP程序包都是不错的产品。不过,在你设法升级你的系统而它们不能保持同步时,真正可笑的事情也会接踵而至。
依照笔者的粗浅的观点,你最好不要采用Perl, Python 或 Ruby。因其需要依赖于过时的、不安全的LAMP安装,所以主机服务也就臭名昭著。因此,请检查如下站点链接:http://www.webhostingtalk.com/,它可以帮助你找到一个合适的Web主机服务。

