设为首页 加入收藏 网站首页
休闲娱乐
军事·社会百态·娱乐八卦·校园
体育·美女写真·幽默笑话·游戏
综合·在线视频·搞笑图片·灵异
两性生活
两性知识·性爱技巧
情色实录·两性图片
女性健康·同性之恋
电脑网络
网络编程·网页制作·软件教学
操作系统·图形图象·冲浪宝典
网络安全·邮件系统·认证考试
热点专题
芙蓉·真人漫画
72式·欲望都市
帅哥·人体彩绘
您现在的位置: 世纪中国 >> 网络编程 >> PHP教学 >> php技巧 >> 教程正文
向普通人加密 用PHP程序保护数据
作者:中国图霸    教程来源:网络    点击数:    更新时间:2007-1-1

</p>
<p><input type="submit" name="submit" value="log in"/>
</p>
</form>

此 HTML 标记存在什么问题?为密码字段选择的输入类型为 text,这意味着用户键入该字段的任何内容都会以明文形式显示在屏幕上。

您可以方便地将该类型更改为 password,并将该字段中的用户输入替换为一串星号。可靠吗?绝对可靠。不过,这一步骤在很多应用程序中会被忽略。事情虽小,但在安全方面会使人们感到不安。您愿意将钱存入休息大厅的窗口被严重毁坏的银行吗?也许您会。但是您可能更期望银行是完好无损的。对于应用程序来说,道理相同。

让我们继续介绍处理表单提交的 verify.php 文件。

清单 2. 简单的 PHP 登录验证

<?php
$user = $_POST['user'];
$pw = $_POST['password'];

$sql = "select user,password from users
where user='$user'
and password='$pw'
limit 1';
$result = mysql_query($sql);

if (mysql_num_rows($result)){
//we have a match!
}else{
//no match
}

?>

读阅到此,您会露出满意的微笑。等待阅读本文加密部分的部分读者可能变得不耐烦了,但是加密仅为安全问题的一部分。您还必须聪明地处理引入的用户数据。developerWorks 教程 “锁定您的 PHP 应用程序”(请参阅参考资料)讨论了 SQL 注射:将不正常的数据发送到数据库可导致有害或无根据的访问。无论您使用多少个加密,公开弱点没有一点好处。

您应遵循下面的传统安全原则:“不信任用户提供的数据” 和 “深层防御”;清除传入数据并通过转义传入的字符串保护数据库(参见清单 3)。深层防御是将多余的安全方法都妥善保管 —— 不仅包括加密,还包括用户所提供数据的智能处理。
清单 3. 保护 PHP 形式解析免受用户数据操作的影响

<?php
$user = strip_tags(substr($_POST['user'],0,32));
$pw = strip_tags(substr($_POST['password'],0,32));

$sql = "select user,password from users
where user='". mysql_real_escape_string($user)."'
and password='". mysql_real_escape_string($pw)."'
limit 1';
$result = mysql_query($sql);

if (mysql_num_rows($result)){
//we have a match!
}else{
//no match
}
?>


通过合理使用 strip_tags()、substr() 和 mysql_real_escape_string(),可以删除任何潜在的有害命令,将字符串减少到 32 个字符,并去掉所有特殊字符,数据库可能将这些字符解释为非预期命令字符串的一部分。

在这一过程结束时,数据库中仍有一个明文密码。您不能显示它。最容易的修复方法是使用 PHP 的内置 crypt() 功能。

使用 crypt()

PHP 的内置 crypt() 功能可实现单向加密 或单向散列。它只所以是单向的,是因为在对某内容进行

上一页  [1] [2] [3] [4] [5] [6] 下一页

分类推荐
社会 社会 娱乐 军事 校园
幽默 体育 女性 专题
电脑 编程 网页 软件 系统
安全 图象 冲浪 认证
搞笑 人物 动物 物品 表情
签名 色图 漫画 奇闻
美女 明星 清纯 自拍 欧美
丝袜 卡通 性感 走光
两性 知识 性图 孕育 技巧
同性 单身 情感 实录
视频 写真 搞笑 MTV 翻唱
写实 片段 游戏 综艺
php技巧热门文章
普通教程 PHP用户指南-cookies部分
普通教程 PHP对文本数据库的基本操作方法
普通教程 WAP与PHP程序设计之基础篇
普通教程 PHP 5.0中多态性的实现方案浅析
普通教程 用PHP读取和编写XML DOM
普通教程 用新PHP插件实现MySQL为基础的
普通教程 PHP5中PDO的简单使用
普通教程 如何利用PHP和CSS改变网页文字
普通教程 PHP中使用crypt()实现用户身份
普通教程 通过缓存数据库结果提高PHP性能
普通教程 PHP5中的this,self和parent关键
普通教程 利用PHP的OOP特性实现数据保护
普通教程 ppform还真是个不错的工具 — 
普通教程 PHP has encountered an Acces
普通教程 向普通人加密 用PHP程序保护数
普通教程 怎样才能成为PHP高手?学会懒惰
普通教程 Linux操作系统中用PHP构建网站
普通教程 PHP 中的 SimpleXML 处理
普通教程 更好的构造开发模板 五种PHP设
普通教程 怎样在PHP 中运用 SimpleXML 处

  广东广州海珠区 世纪网络工作室 版权所有 上海电信提供网络带宽
信箱: 9297659@qq.com 粤ICP备06113754号