我想知道一个带有if语句的简单php脚本将作为管理员密码是多么安全。说,我有一个网页,我想登录编辑一些内容。如果我创建了HTML登录脚本,则通过帖子检索凭据,并通过“if”语句验证密码和用户名,例如
if ($_POST['pass'] = 'SomePassWordWithAlotOf123456789' and $_POST['user'])
{
.. do stuff ...
}
我确信这种方法存在重大的安全问题,但我很好奇可能会出现什么问题,因为我正在研究编写安全的PHP应用程序。我之所以对此方法感兴趣,是因为它避免了数据库联系。此外,我知道这种方法可能会发生暴力攻击。
提前致谢。
答案 0 :(得分:2)
好吧,既然你没有在代码中显示盐就不能使用密码,那么你就会陷入困境。只要您和只有您可以访问服务器,它就是安全的。如果你被黑了,你的管理员密码将是明文。只要服务器安全,您的密码就是安全的。
要防止暴力破解,您可以添加一个会话,以防止尝试在五次尝试失败后尝试登录。
答案 1 :(得分:2)
这与您将Web服务器的FTP /文件系统访问权限远离用户一样安全,因此没有人能够看到您脚本的源代码。
因此,您可能希望在比较之前哈希密码。
echo password_hash('SomePassWordWithAlotOf1234567', PASSWORD_BCRYPT);
这将输出: $ 2y $ 10 $ AbaPXE / K / mDQWZkRf7JHC.7Z6gKS0YfzdrGOxGXEs24Oh1 / 224b.C
现在,使用此字符串作为比较键。但你只需添加一些味道:
if (password_hash($_POST['pass'], PASSWORD_BCRYPT) == '$2y$10$AbaPXE/K/mDQWZkRf7JHC.7Z6gKS0YfzdrGOxGXEs24Oh1/224b.C')
{
.. do stuff ...
}
只需添加用户名验证,即可开始使用。
现在,如果您担心暴力攻击,可以在脚本中添加最多5次登录尝试超时。
在您的登录表单中使用CAPTCHA也可以防止自动暴力/字典攻击。
如果您正在处理要传递给客户端的系统,您可能需要对源代码进行编码,这样他们就不会轻易阅读脚本。至少,他们解码你的脚本将是一项繁琐的工作。
您可以使用SourceGuardian执行此操作。
另一方面,有一些免费的混淆器/编码器,如PHP Protect。
答案 2 :(得分:0)
也许你可以使用一些验证步骤,像@PetterPettersson说你也可以阻止用户尝试登录太频繁。
也许您也可以告诉我们您的安全问题或安全登录是什么意思