- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP平台的缺陷
Nikolaj Cholakov
摘要:
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环境。
1. 来自于语言初始设计和概念的问题。
PHP语言的初始设计目的是为Web服务器脚本提供一个非常简单易用的环境。一些脚本语言的典型特征肯定会使PHP面临更严峻的挑战。
1.1.PHP没有严格的变量类型。
在PHP语言中,没有严格的数据类型,变量必须在使用之前被申明。这样一来,变量的使用和管理就变得很复杂了。这是对那些经验不足的程序员来说是一件糟糕的事情,这很可能导致一些漏洞的产生,而且还很难发现他们。遗憾的是,这个问题不大可能在PHP中解决,因为这要改变PHP语言最基本的设计思想。
1.2.注册全局变量。
PHP这种程序设计技术使参数的请求操作变得简单,给程序员带来了方便。然而,当register_globals操作随着HTTP请求变量注入到脚本时,这种特征的益处并不比它的缺陷造成的风险更大。另外一个事实是PHP不能要求变量初始化,这种特性给了黑客理想的机会,将恶意代码用像cross-site脚本文件注入这样的技术渗入脚本中。这种来自于全局变量自动注册的威胁是众所周知的。很令人遗憾,即使最近的发行版本-PHP5也包含有这种特性。直到PHP6发行,全局变量自动注册的功能才被取消。
但是这本是很久以前就应做出的改变。现在很多的应用都依赖于这种特性,在PHP6.0平台上也将要遇到同样的问题。也许有一个好的方法,那就是限制include()和require()的功能,只允许使用本地文件,并以此来避免远端文件的注入。需要进一步说明的是,要建立一种方法来强迫用户无论何时都要过滤输入和输出,这将有助于避免SQL注入和其他各种常见的问题,这也将是一个非常受欢迎的改变。
1.3外设的可靠性
为了执行一些重要的任务,PHP需要依赖外部设备,这将削弱平台的独立性和可移植性。一个很好的例子就是,当一个实时的工作需要被基于PHP平台的Web应用程序执行:
例如,一个通高邮件必须在每晚的20:00被准时的发送给系统管理员,或者每三个小时都必须执行系统状态检测。这些工作仅仅使用外部工具就能够执行,这是以LAMP为代表的Linux克隆服务器典型应用。这个克隆服务器提供了很好的接口和足够的功能。
它的缺陷是,如果很多的Web应用程序都在同一个服务器上使用克隆服务器,这必然将互相干扰。转移Web应用程序到另一个服务器上则必将带来兼容性问题。
1.4导致低劣的程序设计
PHP脚本并不是最优化的预编译程序。每个PHP对象都有一个字节的头部,程序每次运行的时候都不得不从语法上从头进行分析,除非Zend最优化或者开销被用了。这就是为什么PHP没有鼓励使用模块化程序设计法的原因。
它的对象向导模块也不是非常的可靠。PHP平台的主要开发者认识到PHP类的列示要比Java花费了更多的时间。
PHP最大的一个优点就是速度,但是程序员不能快速有效的使用对象向导。
因此老式的程序扥设计风格就被重新使用了,这对小的简单的项目也许是一个好的解决方法,但是用在高级别的项目上则完全不能令人满意。事实上,PHP并不是公司级应用程序的最合适选择,因为它只是关注Web的发展。
PHP是一个很容易抄袭的语言。许多的初学者能立即使用数据库功能创作一个简单Web应用程序,而不用花时间
原创力文档


文档评论(0)