【问题标题】:Storing passwords for MYSQL in PHP application in a secure manner以安全的方式在 PHP 应用程序中存储 MYSQL 的密码
【发布时间】:2014-04-29 14:32:21
【问题描述】:

我有一个从代码连接到数据库的 php 应用程序。我在徘徊存储这些凭据的一些安全方法是什么?这是一个 linux 服务器。

编辑:我只是想听听一些有见地的意见,以便我自己得到一个有见识的意见,以便与我的团队讨论。我反对加密任何密码,但我的团队不相信。

我认为,如果密码被加密,那么我们也需要将解密密钥以纯文本形式存储在某处,从而使整个工作变得毫无意义。

【问题讨论】:

    标签: php mysql security


    【解决方案1】:

    没有“安全方式”。无论如何,必须对密码进行解密/未混淆处理,以便将其发送到数据库库以建立连接。

    最好将登录信息存储在站点文档根目录之外的文件中。这不是万灵药,但至少如果您的服务器配置损坏并开始提供 php 源而不是执行,它不会让您的凭据泄露,因为该文件将无法直接访问。

    【讨论】:

    • 我的经理坚持要加密密码。我看不出有什么道理或理由,但如果这是他们想要的,我需要找出最好的方法来做到这一点。
    • $pw = base64_decode('blahblahbalbhalblah') 可能足以解决这个问题,如果经理是一个典型的无知的 yutz,他正在处理一份对实际问题没有理解的清单。但同样,这是毫无意义的。如果您的密码是挂锁,这种“安全性”只是将钥匙贴在锁的侧面。 “是的,它已锁定,我们 100% 安全”。
    【解决方案2】:

    至少把它放在一个不能通过网络服务器直接访问的配置文件中。

    这样就必须有人闯入你的机器才能读取它。

    【讨论】:

    • 加密怎么样?
    • 好吧,因为您必须将凭据发送到数据库服务器,所以您必须将它们未加密。在我看来,你可以用来混淆密码的所有东西都可以恢复
    • 我同意,我不是专家,但这是我的想法。我只需要形成一个明智的意见,然后将其呈现给我的团队。
    【解决方案3】:

    应用defense in depth 并只允许专用 MySQL 用户从 localhost 进行连接。然后,即使连接凭据以某种方式泄露,连接到数据库的唯一方法是通过 Web 服务器。

    这样,攻击者将需要访问 Web 服务器并能够执行任意代码/命令。如果这有可能被妥协,那就太迟了。

    【讨论】:

    • 谢谢秋葵。我们有应用程序本地的 MySQL 实例。所以我的逻辑是,为了访问数据库,攻击者需要在网络服务器上获取 shell。然后一切都已经设置好了。
    【解决方案4】:

    同意其他人的观点,您需要在某些方面披露...

    但是你可以使用 php 的 crypt 函数 http://docs.php.net/manual/en/function.crypt.php

    首先使用此功能或其他功能加密密码,加密后将加密密码设置为您的数据库密码... [注意-我不知道mysql是否允许您存储crpt返回的值以设置为密码] 在连接到 db frm php 时,将原始密码传递给 crpyt 函数 [或上面用于加密的函数/方法] 将其存储在一个变量中并在连接时提及这个 var

    $encrpted_pass = crypt($original_password);
    $con = mysql_connect("localhost","mysql_user",$encrpted_pass);
    

    缺点 如果您直接连接到 MySQL,您将很难记住密码 要解决这个问题,您可以在想要直接连接时创建一个单独的数据库用户..

    2) 另一种方法是将密码存储在单独的文件中,检索文件的内容,将其存储在 var 中,然后使用该 var 连接到 MySQL DB,这样你就不会泄露用于连接数据库的文件中使用的密码

    $pass=file_get_contents("mysql.txt");
    $con = mysql_connect("localhost","mysql_user",$pass);
    

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 2013-05-19
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多