假设您有一个需要密码的简单页面,您将此页面通过电子邮件发送给拥有密码的朋友,以便他们可以查看其中的隐藏信息。
这是不安全的,为什么?
$password = htmlentities($_POST["password"]);
echo ($password == "hello123" && strlen($password) <= 10)
? "secret information" : "incorrect password";
有人可能会受到什么样的攻击?我想他们试图突破查询?如何加密页面内的密码(SHA1)更安全?
答案 0 :(得分:0)
没有查询。对于像这样的简单页面,没有理由进一步保护它,因为黑客必须访问服务器的文件系统才能找到密码。
答案 1 :(得分:0)
如果用户选择自己的密码,则必须使用哈希密码。他们通常会为多个网站重复使用相同的密码,如果您的网站泄露,其他更重要的网站也会受到损害。
即使您将密码硬编码在代码中,最好只将其哈希值放入代码中。只需要做很少的工作,每个有权访问服务器的人都可以读取密码(主机,丢失的备份,版本控制......)。
从数据库获取密码通常比从代码中获取硬编码密码(需要服务器上的权限)更容易(SQL注入),因此需要更好地保护数据库中的密码。
答案 2 :(得分:0)
一个简单的哈希(比如sha1)可以用&gt;攻击具有线索和游戏玩家gfx卡的15岁攻击者每秒10亿次尝试(如果攻击者获取哈希值并尝试找到明文密码,例如在找到某种方式从存储它之后读取哈希值)。
如果你向哈希添加一个盐,这甚至都是正确的。
所以,如果您不需要,请不要编写自己的密码,有很多方法可以让经验证的代码为您检查一些密码(例如,通过一些apache模块,可能是一个好的php密码库,...)。
表示密码代码可能正常且足够现代,当它在内部使用pbkdf2,bcrypt,scrypt,sha512-crypt之类的东西时。