【问题标题】:Connect to MySQL with hashed password?使用散列密码连接到 MySQL?
【发布时间】:2010-11-08 03:29:13
【问题描述】:

我想知道(并使用 Google 没有明确的结果)是否有任何方法可以使用散列密码通过 PHP 连接到 MySQL 数据库。假设我有以下内容:

Password (plain): 'foobar'
Password (sha1): '8843d7f92416211de9ebb963ff4ce28125932878'

现在我想像这样连接到 MySQL(以 mysql_* 函数为例,虽然我正在使用 PDO):

$db_link = mysql_connect ( 'localhost', 'user', '8843d7f92416211de9ebb963ff4ce28125932878' );

这可能吗?以前有人做过吗?

【问题讨论】:

  • 如果有人可以访问该代码,那么无论您的密码是什么,他们都可以登录。只需使用随机生成的长密码,不要将其显示给用户:-)。
  • 这样做没有意义...如果您希望您的用户对他们的超级机密密码有更多“隐私”,他们应该首先通过任何类型的哈希运行这些超级机密关键字函数并使用该哈希作为他们的密码

标签: php mysql hash connection


【解决方案1】:

那么“哈希”将成为密码。有什么好处?

【讨论】:

  • 因此,即使有人获得了纯文本连接数据,也不会知道用户的密码。仅当您对所有内容都使用相同的密码时,这才有意义。
  • 好处是隐私。我正在开发一个应用程序,它存储数据库连接值(在“主”数据库中)以使用该应用程序。
  • 我没有看到优势。假设 MySQL 有这样一个 ...connect_with_passwordhash() 函数。我以某种方式访问​​了您的主数据库并窃取了您所有的密码哈希。现在,我不能像您的脚本那样简单地将它们提供给 ...connect_with_passwordhash() 吗?
  • 但是你不需要另一个内置的 mysql 函数。建立一个账户管理系统(/一个网络界面),它接受普通密码,然后将哈希值存储在“主数据库”和其他数据库中(作为密码)。这也是添加某种密码盐的好机会。
【解决方案2】:

简短的回答是否定的。

但是,只是想知道……您真正关心的是什么?有人入侵了您的服务器并发现了您的密码?

【讨论】:

  • 只是隐私,当您(例如)在没有在数据库中加密密码的情况下在网站上注册时,您愿意吗?
  • 您应该散列(而不是加密)人们的密码的原因不是为了保护他们的数据,而是为了防止已经破坏您的安全并可以访问所有内容的黑客能够带您登录详细信息并尝试重复使用它来访问您在其他网站上的详细信息,例如电子邮件。当你在混淆和安全之间徘徊时要小心。
【解决方案3】:

用例是让多个开发人员编辑包含您可能不希望他们知道的 sql 连接密码的 .php 文件。

我认为一种解决方案是将连接语句移到这样的文件中,确保您没有 $password 变量,尽管因为有人可以调用它并稍后在他们的 .php 文件中打印出来

mysql.php
<?php
    mysql_connect('db.cs.dal.ca','user','password');
    @mysql_select_db($database) or die( "Database Error ".mysql_error());
?>

并且只给你自己 rw------- 对 mysql.php 文件的权限,然后在你所有组可访问的 .php 文件中,你可以只包含该文件来唤起连接。

index.php
<?php include("mysql.php") ?>

<!-- some web content -->

<?php mysql_close(); ?>

并授予您的开发人员组 rw-rw---- 对所有其他 .php 文件的权限,只要 mysql.php 文件的所有者可以读取它就应该在 php 服务器上执行..... i想想。

例如,您还可以从 git 中排除 mysql.php,让开发人员使用自己的 mysql.php 文件运行自己的本地数据库副本,并提供生产数据库的精简副本以进行本地开发和测试

【讨论】:

    【解决方案4】:

    简单的答案是“你不能。”

    我知道您要完成什么:您可能使用了一些共享主机计划,并且无法将您的配置文件放在 html 文件夹上方。

    Stefan 认为黑客只是在寻找配置文件,并想让他不得不为获取信息而工作。一旦黑客意识到他需要更多信息,他就必须再次破解该网站。

    这与用户名和密码表无关。这是用于 MySQL 配置文件的。

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2013-06-07
      • 2023-03-29
      • 2013-06-21
      • 1970-01-01
      相关资源
      最近更新 更多