文档介绍:PHP平台的缺陷NikolajCholakov摘要:PHP网站设计平台在最近几年变得非常流行。PHP的简单,易学,易用让很多新手都愿意接受它。然而,PHP也有一些严重的缺陷,到底哪些是会导致PHP被改写的缺陷呢?这篇文章是针对PHP缺陷可能引起的一些潜在的问题,和一些已经发生的问题而写的。同时,也将提出一些促进这个平台改进的观点。关键词:PHP,PHP6,缺陷,网站设计简介PHP始于拉斯姆斯·乐道夫1994年创建的一套小的通用网关接口,在经过几代改动之后,如今的PHP成为了最流行的网站设计平台。有许多客观的原因使它如此受欢迎。PHP是非常简单的,易学易用的,开源发布的独立平台。PHP能够很容易的支持当下任何种类的Web服务器。PHP脚本能被非常快速地执行,并且PHP资源在Web上有很大的自由空间。同时,PHP平台也有许多严重的缺陷,其中的一些并没有被广泛的关注过。忽视这些缺陷将导致低劣的程序设计。另一个严重的问题是基于PHP的Web应用是有安全风险的,主要是由于很糟糕的程序设计和PHP典型程序设计技术的不恰当运用。正文大部分缺陷的产生,是因为PHP缺少可靠和一致的初始设计。为了克服这个问题,PHP的开发团队几乎都会为每个新的发行版本更改说明书。因此,PHP平台被不断地改进,但是,一些向后兼容的问题也显现了出来。当PHP被当做LAMP(Linux-Apache-MySQL-PHP)中的一部分运行时,一些问题就体现出来了,我们根据缺陷的来源和范围,将它分成了几类:典型的问题和缺陷,异常的PHP环境。。PHP语言的初始设计目的是为Web服务器脚本提供一个非常简单易用的环境。一些脚本语言的典型特征肯定会使PHP面临更严峻的挑战。。在PHP语言中,没有严格的数据类型,变量必须在使用之前被申明。这样一来,变量的使用和管理就变得很复杂了。这是对那些经验不足的程序员来说是一件糟糕的事情,这很可能导致一些漏洞的产生,而且还很难发现他们。遗憾的是,这个问题不大可能在PHP中解决,因为这要改变PHP语言最基本的设计思想。。PHP这种程序设计技术使参数的请求操作变得简单,给程序员带来了方便。然而,当"register_globals"操作随着HTTP请求变量注入到脚本时,这种特征的益处并不比它的缺陷造成的风险更大。另外一个事实是PHP不能要求变量初始化,这种特性给了黑客理想的机会,将恶意代码用像cross-site脚本文件注入这样的技术渗入脚本中。这种来自于全局变量自动注册的威胁是众所周知的。很令人遗憾,即使最近的发行版本-PHP5也包含有这种特性。直到PHP6发行,全局变量自动注册的功能才被取消。但是这本是很久以前就应做出的改变。现在很多的应用都依赖于这种特性,。也许有一个好的方法,那就是限制include()和require()的功能,只允许使用本地文件,并以此来避免远端文件的注入。需要进一步说明的是,要建立一种方法来强迫用户无论何时都要过滤输入和输出,这将有助于避免SQL注入和其他各种常见的问题,这也将是一个非常受欢迎的改变。,PHP需要依赖外部设备,这将削弱平台的独立性和可移植性。一个很好的例子就是,当