Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单PHP密码页-为什么要加密?_Php_Forms_Passwords - Fatal编程技术网

简单PHP密码页-为什么要加密?

简单PHP密码页-为什么要加密?,php,forms,passwords,Php,Forms,Passwords,假设您有一个需要密码的简单页面,您可以使用密码通过电子邮件将此页面发送给朋友,以便他们可以查看其中的隐藏信息 这不安全吗?为什么 $password = htmlentities($_POST["password"]); echo ($password == "hello123" && strlen($password) <= 10) ? "secret information" : "incorrect password"; $password=htmlentities

假设您有一个需要密码的简单页面,您可以使用密码通过电子邮件将此页面发送给朋友,以便他们可以查看其中的隐藏信息

这不安全吗?为什么

$password = htmlentities($_POST["password"]);
echo ($password == "hello123" && strlen($password) <= 10)
? "secret information" : "incorrect password";
$password=htmlentities($_POST[“password”]);

echo($password==“hello123”和&strlen($password)没有查询。对于这样一个简单的页面,没有理由进一步保护它,因为黑客必须访问服务器的文件系统才能找到密码。

如果用户选择自己的密码,则必须对密码进行散列。通常,他们会在多个站点上重复使用相同的密码,如果您的站点泄漏,其他更重要的是网站也遭到破坏

即使您将密码硬编码到代码中,也最好只将其散列到代码中。这样做的工作量很小,每个访问服务器的人都可以读取密码,否则(主机、丢失的备份、版本控制等)

从数据库中获取密码通常比从代码中获取硬编码密码(需要服务器权限)更容易(SQL注入),因此数据库中的密码需要得到更好的保护。

一个简单的散列(如sha1)可以被15岁的攻击者以每秒10亿次以上的速度攻击,攻击者需要一条线索和一张玩家gfx卡(如果攻击者获取哈希并尝试查找明文密码,例如,在找到某种方法从存储哈希的位置读取哈希后)

如果你在散列中加入盐,这一点仍然成立

因此,如果不需要,不要编写自己的密码代码,有很多方法可以让经过验证的代码为您检查一些密码(例如,通过一些apache模块,可能通过一个好的php密码库,…)


当密码在内部使用诸如pbkdf2、bcrypt、scrypt、sha512 crypt之类的东西时,表明密码可能还可以并且足够现代。

散列-未加密-密码是标准过程,用于防止在包含密码的数据库被泄露时暴露用户密码。如果您不关心密码的获取暴露如果你的代码被暴露,那么你就没事了。考虑到你的服务器在这种情况下会被破坏,不管怎么说,你都是完蛋了……对于这么简单的事情,Apache身份验证也是很简单的。让我直说吧。即使你决定将密码存储在mySQL数据库中,你也必须侵入服务器并解密。哈希密码通过降低每次尝试的速度,提供一定程度的保护,以防受到干扰。其真正的好处是,如果服务器受到威胁,攻击者拥有整个DBOK,这似乎是正确的,谢谢。