当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用php42书写安全的脚本

PHP
利用discuz实现PHP大文件上传应用实例代码
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
php在字符串中查找另一个字符串
php下HTTP Response中的Chunked编码实现方法
PHP实现定时生成HTML网站首页实例代码
PHP下一个非常全面获取图象信息的函数
PHP strtr() 函数使用说明
php 删除无限级目录与文件代码共享
php AJAX实例根据邮编自动完成地址信息
php miniBB中文乱码问题解决方法
cmd下运行php脚本
PHP 遍历XP文件夹下所有文件
php 移除数组重复元素的一点说明
discuz论坛 用户登录 后台程序代码
Optimizer与Debugger兼容性问题的解决方法
Zend Studio 无法启动的问题解决方法
php 页面执行时间计算代码
php smarty的预保留变量总结
php获取网页内容方法总结
php读取msn上的用户信息类

PHP 中的 用php42书写安全的脚本


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 311 ::
收藏到网摘: n/a

用PHP 4.2书写安全的脚本

转贴:Andy.m   日期:2004-06-06   人气:19
在很长一段时间内,PHP作为服务器端脚本语言的最大卖点之一就是会为从表单提交的值自动建立一个全局变量。在PHP 4.1中,PHP的制作者们推荐了一个访问提交数据的替代手段。在PHP 4.2中,他们取消了那种老的做法!正如我将在这篇文章中解释的那样,作出这样的变化的目的是出于安全性的考虑。我们将研究PHP在处理表单提交及其它数据时的新的做法,并说明为什么这样做会提高代码的安全性。

这里有什么错误?

看看下面的这段PHP脚本,它用来在输入的用户名及口令正确时授权访问一个Web页面:

<?php 
// 检查用户名及口令 
if ($username == 'kevin' and $password == 'secret') 
$authorized = true; 
?>

<?php if (!$authorized): ?>
<!-- 未授权的用户将在这里给予提示 -->
<p>Please enter your username and password:</p>
<form action=" <?=$PHP_SELF?> " method="POST">
<p>Username: <input type="text" name="username" /><br />
Password: <input type="password" name="password" /><br />
<input type="submit" /></p>
</form>
<?php else: ?>
<!-- 有安全要求的HTML内容 -->
<?php endif; ?>
OK,我相信大约半数的读者会不屑的说“太愚蠢了-- 我不会犯这样的错误的!”但是我保证有很多的读者会想“嗨,没什么问题啊,我也会这么写的!”当然还会有少数人会对这个问题感到困惑(“什么是PHP?”)。PHP被设计为一个“好的而且容易的”脚本语言,初学者可以在很短的时间内学会使用它;它也应该能够避免初学者犯上面的错误。
再回到刚才的问题,上面的代码中存在的问题是你可以很容易地获得访问的权力,而不需要提供正确的用户名和口令。只在要你的浏览器的地址栏的最后添加?authorized=1。因为PHP会自动地为每一个提交的值创建一个变量 -- 不论是来自动一个提交的表单、URL查询字符串还