使用if语句进行简单的管理验证有多安全?

时间:2015-07-30 07:27:56

标签: php

我想知道一个带有if语句的简单php脚本将作为管理员密码是多么安全。说,我有一个网页,我想登录编辑一些内容。如果我创建了HTML登录脚本,则通过帖子检索凭据,并通过“if”语句验证密码和用户名,例如

if ($_POST['pass'] = 'SomePassWordWithAlotOf123456789' and $_POST['user'])
{
     .. do stuff ...
}

我确信这种方法存在重大的安全问题,但我很好奇可能会出现什么问题,因为我正在研究编写安全的PHP应用程序。我之所以对此方法感兴趣,是因为它避免了数据库联系。此外,我知道这种方法可能会发生暴力攻击。

提前致谢。

3 个答案:

答案 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说你也可以阻止用户尝试登录太频繁。

也许您也可以告诉我们您的安全问题或安全登录是什么意思