向普通人加密 用PHP程序保护数据(4)_PHP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:用PHP实现Ftp用户的在线管理
领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品。通过FreeBSD Apache PHP Mysql FTP我实现了该要求。 实现在线报名和上传作品的思路是利用网页表单收集用户

清单 6. 重访 verify.php

以下为引用的内容:

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

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

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


例如,如果存储的加密密码是 i83Uw28jKzBrZF,则加密存储传入的密码,并将它与存储的密码进行比较。攻击者破坏加密的惟一方法是将一个非常长的字符串列表与您的加密密码进行比较,每次比较一个,直到找到匹配项。这也称为字典攻击,因此您的密码最好不应该是密码 或 Star Trek 字符名,甚至您的呢称。因为在加密 Fido 后,它会变成一堆乱语,但这并不表明它对于此种攻击是安全的。确保您的密码具有某一长度(八个或更多字符),并包含大写字母、数字和特定的字符,如 ! 和 $,这样猜测您的数据会更加困难。在短语中,f1D0! 是一个较好的密码,它胜于 GandalftheGray 之类的长密码,由于后者使用小写字母,并且是 “Lord of the Rings” 的字符名称。

使用 crypt() 的一种不太好的方法

还有使用 crypt() 的另一种方法,这种方法不太好:将明文的前 n 个字符用作 salt。

清单 7. 将明文字符用于 salt

以下为引用的内容:

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

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

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

如果您的用户名是 tmyer,则 salt 预置为 tm,它会使某人很容易推断 salt 的内容。这不是一个好方法。

分享:用PHP程序实现删除目录的三种方法实例
1。递规法: //没测试 以下为引用的内容: deleteDir($dir) { if (rmdir($dir)==false && is_dir($dir)) { if ($dp = opendir($dir)) { w

来源:模板无忧//所属分类:PHP教程/更新时间:2008-08-22
相关PHP教程