将单个密码存储在PHP文件中,而不是存储在用户数据库中

将单个密码存储在PHP文件中,而不是存储在用户数据库中,php,authentication,passwords,Php,Authentication,Passwords,我正在创建一个网站的管理面板部分,其中只有一个用户。我想在一个单独的config.php文件中存储一个密码,而不是创建一个带有usersname和散列pw的users表,因为它只有一个用户 你有什么想法?还有人试过这个吗?是否存在一些我应该注意的主要漏洞 config.php示例: $pw = "honeybadgerbubblegum"; 示例login.php: require('config.php'); if(isset($_POST['login'])) { $upw = m

我正在创建一个网站的管理面板部分,其中只有一个用户。我想在一个单独的config.php文件中存储一个密码,而不是创建一个带有usersname和散列pw的users表,因为它只有一个用户

你有什么想法?还有人试过这个吗?是否存在一些我应该注意的主要漏洞

config.php示例:

$pw = "honeybadgerbubblegum";
示例login.php:

require('config.php');

if(isset($_POST['login']))
{
   $upw = md5($_POST['upw']);
   $pwHashed = md5($pw);
   if($upw === $pwHashed)
   {
   //success
   } 
}

如果您将其存储在一个PHP文件中,那么就不会有真正的漏洞,就像有人看不到您的代码一样。如果只有一个可能的用户,这将是存储变量的另一种情况。

我认为您会遇到一些问题:

  • 永远不要以纯文本形式存储密码。使用最安全的哈希算法对“honeybadgerbubblegum”进行哈希,这样您和其他可以访问您的文件的人就无法看到纯可读文本

  • 如果一个用户想要更改密码怎么办?他会打电话给你帮他查另一个密码吗?如果他不想让你知道他/她的密码怎么办?你打算怎么办?(除非你是管理员)


  • 既然你有一个用户成员表?对于其他用户,为什么不将该管理员帐户放在同一个表中,而是用一个标记表示一个用户是管理员。与所有普通帐户标记为“1”和管理员标记为“0”一样,如果您将密码存储在PHP文件中,则不会存在漏洞。但是,在这种情况下,当密码更改时,需要将其覆盖,这意味着您需要实现一项功能,如果管理员保存新密码,将重新生成文件


    另外,我也不太理解让一个表为管理员保存一行的问题。这不是一个真正的过度杀伤力,它是一个安全可靠的方法,可以帮助您不必实现PHP再生器。

    显然您是安全的,但实际上它们是一个漏洞,虽然很少见,但可能会发生!考虑下面的场景:

    如果PHP因任何原因崩溃,那么Apache会将所有PHP文件作为txt文件提供给公众,然后任何人都可以下载您的PHP文件并查看您的密码

    以正确的方式执行:为Admin创建一个单独的表,其中包含一行和一个哈希密码字段


    重要注意事项:永远不要在用户表中保存管理员密码,这是一个很大的漏洞,会使您的密码暴露在各种sql注入中。

    除非您在Intranet上,否则不要使用MD5存储密码哈希。因为rainbow表@Fred ii-
    hash_hmac('sha256',)
    恰恰相反。是的,hash_hmac比MD5更安全。或者,使用HTTP身份验证等身份验证方法,我没有这个特定项目的成员表。只有来宾和管理员希望访问管理员页面以更新他们的帖子,类似于博客。我考虑这种方法的唯一原因是,仅仅为一个管理员用户创建一个用户表似乎有些过火。无论您选择文件还是数据库,它都会有相同的过程或工作量。唯一改变的是你存储密码的地方。但IMHO在数据库中存储密码/帐户并不过分。IMO若将管理员凭据存储在users表中,将比将其存储在php文件中更容易受到攻击。正确的方法是为管理员创建一个单独的表,即使它包含1行。如果他以纯文本形式存储它,也会有:)我们谈论的是PHP文件,因此它不会以纯文本形式存在。所有能够访问该文件的人都可以使用纯文本。如果你是管理员,我是程序员,我可以在PHP文件中看到你的密码,因为我可以访问它。如果有15个程序员负责这个应用程序呢。他们都可以查看该密码。这不是一个弱点吗?对不起,你不必道歉。按原样存储“您的密码”从来都不是一个好主意。你在和我争论明文对于密码是不安全的,然而,我从来没有说过明文是安全的。当然,您将在PHP文件或数据库中存储加密值。我们讨论了在PHP文件中存储密码是否不安全。是的,我理解。我只是担心“无漏洞”可能会认为或暗示OP所提供的OP代码已经可以了:)谢谢