确保安全使用LAMP开源开发工具的四步曲(1)


LAMP 

图-LAMP

确保安全使用LAMP开源开发工具的四步曲

任何暴露在互联网上的服务器需要对安全问题特别注意,对于动态Web服务器来说,由于其复杂性这一点显得更加突出。间接破坏的风险是非常高的。今天很多有组织的计算机犯罪一般利用计算机系统的漏洞,恶意软件正是欺骗、欺诈和盗窃等破坏行为的入口之一。它们一般不会攻入你的系统来伤害它们,而是悄悄的盗窃数据并把它们发送到全球范围内的僵尸网络中。

一、PHP安全问题严重

PHP超文本标记语言是导致LAMP不安全的主犯。相对很多主流编程语言,它还比较年轻,它诞生于1997年,依然在向前发展中。PHP所存在的问题主要是三方面:与生俱来的设计缺陷、缺乏经验的程序员和从不打补丁或升级PHP的缺乏维护网站。

当你了解了PHP底层的东西后,你会发现它不是一个非常严谨的语言,其中充满了混乱和矛盾。命名约定、语法和大小写敏感全不一致。它的内置功能中有许多是多余的,实现着非常相似但不完全相同的任务,而且它在文档化方面又做的相当差,因此很多人不确定哪一个功能是实现什么操作。如果不了解其令人痛苦的详细信息,很容易导致程序员在编程中犯错。

PHP看似非常容易学习。从一方面来讲它的确如此;你可以在几个小时以内就学会如何搭建起一个动态网站。但是要真正理解它的不安全因素潜伏的地方以及如何处理它们,可能要花费你数年的时间。其中最常见的安全漏洞之一就是未经验证的输入问题——所有的用户输入应该是不被信任的,但是PHP在这方面没有多少工具来帮助实现这个操作,因此你不得不编写自己的验证程序。

当你通过使用Apache的mod_php来将PHP作为一个模块运行的时候,PHP会继承Apache进程的所有信任。因此,所有可以被Apache读写的事情同样也可以被PHP读写,这意味着一个成功的PHP漏洞会直接被引入到Apache和所有相关的程序中。在一个只有少数用户的简单站点上使用mod_php是没有问题的,但是在一个具有多个用户的共享系统中,它就是带来破坏的导火索,因为所有的脚本运行在相同的Apache用户下。一个可行的选择是在suEXEC或CGIWrap下运行PHP。这些情况同样适用于诸如Perl、Python和Ruby等脚本语言。

现在还有众多网站依然运行在PHP3和PHP4之上,而且有更多的从来没有应用一个补丁修复或安全更新。PHP5在2004年发布,而PHP3则要回溯到1998年。是的,这是一种非常愚蠢和危险的事情,但是,更新到新PHP版本几乎意味着要进行大量的代码重写工作。更有趣的是Apache、PHP和MySQL的版本兼容问题,你必须选择同时选择正确的可以互相兼容的版本,否则它们没法一起配合使用。有一些方法可以实现轻松的全新安装,诸如XAMMP和Ubuntu的LAMP安装包。但是有趣的是,当你尝试更新你的系统的时候,它们不能保持同步。

在我个人观点看来,你最好使用Perl、Python或Ruby语言,虽然在前端编程所花费的时间似乎要多一些,但是却会省去了很多安全和维护之忧。


相关内容