【问题标题】:Storing a single password within in a PHP file instead of a database of users将单个密码存储在 PHP 文件而不是用户数据库中
【发布时间】:2015-11-24 03:10:28
【问题描述】:

我正在创建一个只有一个用户的网站的管理面板部分。我正在考虑将密码存储在单独的 config.php 文件中,而不是像我通常为会员区所做的那样创建一个包含用户名和散列密码的用户表,因为它只有一个用户。

有这样做的想法吗?有没有其他人试过这个?是否有一些我应该注意的重大漏洞?

示例 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 authentication passwords


【解决方案1】:

如果您将密码存储在 PHP 文件中没有漏洞,但是,在这种情况下,当密码更改时,它需要被覆盖,这意味着您需要实现一个功能,该功能将在以下情况下重新生成文件管理员保存新密码。

另外,我真的不明白让一个表为管理员保存一行的问题。这并不是一种矫枉过正的方法,它是一种安全可靠的方法,可以帮助您不必实现 PHP 再生器。

【讨论】:

  • 如果他以纯文本形式存储它:)
  • 我们讨论的是 PHP 文件,所以它不会是纯文本格式。
  • 对所有可以访问该文件的人来说都是纯文本。如果您是管理员并且我是程序员,我可以在 PHP 文件中看到您的密码,因为我可以访问它。如果有 15 名程序员负责该应用程序会怎样。他们都可以查看该密码。这不是一个漏洞吗?对不起
  • 您不必感到抱歉。按原样存储“您的密码”绝不是一个好主意。你在跟我争论明文对于密码是不安全的,但是,我从来没有说过它们是安全的。自然,您将在 PHP 文件或数据库中存储加密值。我们正在讨论将密码存储在 PHP 文件中是否不安全。
  • 是的,我明白。我只是担心“没有漏洞”可能会认为或暗示 OP 提供的 OP 的代码已经可以了 :) 谢谢
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我认为你会遇到的一些问题:

    1. 切勿以纯文本形式存储密码。使用最安全的散列算法对“honeybadgerbubblegum”进行散列,以便您和其他可以访问您文件的人无法以纯可读文本看到它。

    2. 如果某个用户想要更改密码怎么办?他会打电话给你为他散列另一个密码吗?如果他不想让你知道他/她的密码怎么办?你会怎样做? (除非您是管理员)。

    既然你有一个用户成员表?对于其他用户,为什么不将该管理员帐户放在同一个表中,而是使用一个标签说明一个用户是管理员。就像所有普通帐户都标记为“1”而管理员标记为“0”

    【讨论】:

    • 我没有这个特定项目的成员资格表。只有访客和管理员想要访问管理页面以更新他们的帖子,类似于博客。我考虑这种方法的唯一原因是,仅为一个管理员用户创建用户表似乎有点过头了。
    • 无论您选择文件还是数据库,它都有相同的过程或工作量。唯一改变的是您存储密码的位置。但恕我直言,在数据库中存储密码/帐户并不过分。
    • IMO 如果您将管理员凭据存储在 users 表中,则比将其存储在 php 文件中的漏洞更多。正确的方法是为管理员创建一个单独的表,即使它包含 1 行。
    【解决方案4】:

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

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

    以正确的方式进行:为管理员创建一个单独的表,其中包含 1 行和一个散列密码字段。

    重要提示:永远不要在 users 表中保存管理员密码,这是一个很大的漏洞,会将您的密码暴露给各种 sql 注入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-07
      • 2021-06-26
      • 1970-01-01
      • 2018-04-20
      • 2011-08-28
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      相关资源
      最近更新 更多