虚拟主机问题之用PHP 42书写安全的脚本.doc
《虚拟主机问题之用PHP 42书写安全的脚本.doc》由会员分享,可在线阅读,更多相关《虚拟主机问题之用PHP 42书写安全的脚本.doc(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、虚拟主机问题之用PHP 4.2书写安全的脚本在很长一段时间内,PHP作为服务在很长一段时间内,PHP作为服务器端脚本语言的最大卖点之一就是会为从表单提交的值自动建立一个全局变量。在PHP 4.1中,PHP的制作者们推荐了一个访问提交数据的替代手段。在PHP 4.2中,他们取消了那种老的做法!正如我将在这篇文章中解释的那样,作出这样的变化的目的是出于安全性的考虑。我们将研究PHP在处理表单提交及其它数 据时的新的做法,并说明为什么这样做会提高代码的安全性。这里有什么错误?看看下面的这段PHP脚本,它用来在输入的用户名及口令正确时授权访问一个Web页面:Please enter your user
2、name and password:form action=” method=”POST”Username: Password: OK,我相信大约半数的读者会不屑的说“太愚蠢了 我不会犯这样的错误的!”但是我保证有很多的读者会想“嗨,没什么问题啊,我也会这么写的!”当然还会有少数人会对这个问题感到困惑(“什么是 PHP?”)。PHP被设计为一个“好的而且容易的”脚本语言,初学者可以在很短的时间内学会使用它;它也应该能够避免初学者犯上面的错误。再回到刚才的问题,上面的代码中存在的问题是你可以很容易地获得访问的权力,而不需要提供正确的用户名和口令。只在要你的浏览器的地址栏的最后添 加?author
3、ized=1。因为PHP会自动地为每一个提交的值创建一个变量 不论是来自动一个提交的表单、URL查询字符串还是一个cookie 这会将$authorized设置为1,这样一个未授权的用户也可以突破安全限制。那么,怎么简单地解决这个问题呢?只要在程序的开头将$authorized默认设置为false。这个问题就不存在了!$authorized是一个完全在程序代码中创建的变量;但是为什么开发者得为每一个恶意的用户提交的变量担心呢?PHP 4.2作了什么改变?在PHP 4.2中,新安装的PHP中的register_globals选项默认为关闭,因此EGPCS值(EGPCS是Environment、G
4、et、 Post、Cookies、Server的缩写 这是PHP中外部变量来源的全部范围)不会被作为全局变量来创建。当然,这个选项还可以通过手工来开启,但是PHP的开发者推荐你将其关闭。要贯彻他们的 意图,你需要使用其它的方法来获取这些值。从PHP 4.1开始,EGPCS值就可以从一组指定的数组中获得:$_ENV 包含系统环境变量$_GET 包含查询字符串中的变量,以及提交方法为GET的表单中的变量$_POST 包含提交方式为POST的表单中的变量$_COOKIE 包含所有cookie变量$_SERVER 包含服务器变量,例如HTTP_USER_AGENT$_REQUEST 包含$_GET、$
5、_POST和$_COOKIE的全部内容$_SESSION 包含所有已注册的session变量在PHP 4.1之前,当开发者关闭register_globals选项(这也被考虑为提高PHP性能的一种方法)后,必须使用诸如$HTTP_GET_VARS这样的令人讨厌的名字来获取这些变量。这些新的变量名不仅仅短,而且它们还有其他优点。首先,让我们在PHP 4.2中(也就是说关闭register_globals 选项)重写上面提到的代码:Please enter your username and password:form action=” method=”POST”Username: Passwor
6、d: 正如你看到的,我所需要做的只是在代码的开始增加下面两行:$username = $_REQUESTusername;$password = $_REQUESTpassword;因为我们希望用户名和密码是由用户提交的,所以我们从$_REQUEST数组中获取这些值。使用这个数组使得用户可以自由选择传递方式:通过URL查询字 符串(例如允许用户创建书签时自动输入他们的证书)、通过一个提交的表单或者是通过一个cookie。如果你想要限制只能通过表单提交证书(更精确地说, 是通过HTTP POST请求),你可以使用$_POST数组:$username = $_POSTusername;$passw
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟主机问题之用PHP 42书写安全的脚本 虚拟主机 问题 PHP 42 书写 安全 脚本
限制150内