Php 使用if语句进行简单管理验证的安全性如何?

Php 使用if语句进行简单管理验证的安全性如何?,php,Php,我想知道一个带有if语句的简单php脚本作为管理员密码有多安全。比方说,我有一个网页,我想登录编辑一些内容。如果我创建了一个HTML登录脚本,通过post检索凭据,并通过“If”语句验证密码和用户名,例如 if ($_POST['pass'] = 'SomePassWordWithAlotOf123456789' and $_POST['user']) { .. do stuff ... } 我确信这种方法会有重大的安全问题,但我很好奇在我研究编写安全的PHP应用程序时会出现什么问题

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

if ($_POST['pass'] = 'SomePassWordWithAlotOf123456789' and $_POST['user'])
{
     .. do stuff ...
}
我确信这种方法会有重大的安全问题,但我很好奇在我研究编写安全的PHP应用程序时会出现什么问题。我之所以对这种方法感兴趣,是因为它避免了与数据库的联系。此外,我也意识到使用这种方法进行暴力攻击的可能性


提前谢谢。

好吧,既然你不能在不显示密码的情况下对密码进行加密,那你就麻烦了。只要你和只有你有权访问服务器,它是安全的。如果你被黑客攻击,你的管理员密码将是明文的。只要服务器安全,您的密码就安全


为了防止暴力,您可以添加一个会话,以防止在五次尝试失败后尝试登录。

这与您如何使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还可以防止自动暴力/字典攻击

如果您正在处理一个要交付给客户机的系统,您可能需要对源代码进行编码,这样他们就不容易读取脚本。至少,对他们来说,解码你的脚本将是一项乏味的工作

你可以用它来做这件事


另一方面,也有一些免费的混淆器/编码器,比如。

也许你可以使用一些验证步骤,比如@Pettersson说,你也可以防止用户尝试频繁登录


也许你也可以告诉我们什么是安全问题或安全登录

问题之一是普通密码。如果有人得到你的php文件,也会得到密码,这就是为什么使用哈希密码器更好的原因,我们专注于没有外部数据源(例如数据库、平面文件等)的简单身份验证