【问题标题】:password / trade secret algorithms : Are they safe in php files?密码/商业秘密算法:它们在 php 文件中是否安全?
【发布时间】:2010-11-23 22:24:56
【问题描述】:

我的网站是使用 php 文件构建的。我在这些文件中使用了商业机密算法,并且我的数据库的 root 密码也存储在这些 php 文件中。我的数据库用于存储许多客户的私人医疗数据。

这是否被视为安全设置?任何人都可以从我的网络服务器下载 php 源代码,从而可以访问我的 root mysql 密码吗?

我在 ubuntu 8.04 和 mysql 5 上运行 apache 2.0 和 php 5。

谢谢。

【问题讨论】:

  • 量化您对安全或可靠的定义。军事级别?阻止临时观察者?
  • 用于存储医疗数据。它必须是最高安全性。

标签: php security passwords


【解决方案1】:

您的服务器与服务器中最薄弱的地方一样安全。

如果有人泄露了一个恰好能够读取该文件的帐户的弱密码 - 那么是的,现在他们有了您的 root 密码。如果你碰巧在你的代码中犯了一个错误(或者使用其他人的代码/程序有这样的错误/“功能”),那么这也可能会损害它 - 是的,这两种情况都会发生。

因此,作为一项基本预防措施,请为该应用程序创建一个特定帐户,该帐户仅限于该应用程序可以访问的内容。如果它确实受到损害,它就没有那么有用了。

当然,root 密码是您可以选择的最糟糕的东西。在安全审计中,保证这是一个瞬间失败。

【讨论】:

    【解决方案2】:

    如果您在美国存储医疗数据,您需要遵守特定、严格的security requirements。其他国家可能有类似规定。

    如果不是专家,我严重怀疑您是否会使用您描述的设置通过安全审核。首先,在纯文本中的任何地方都有根密码是不好的做法。以未加密的形式存储任何敏感数据(例如医疗记录)会邀请任何可以侵入您的网站以帮助自己获取数据的黑客。我怀疑 HIPAA 对保护所有医疗信息和患者身份信息有特定要求。

    这是一件严重的事情,可能会使您的公司承担严重责任。

    【讨论】:

    • 这是一个无益的答案。他是在编程和安全的背景下提出他的问题,而不是法律。
    • 他的问题明确指出他正在存储医疗信息。在美国和大多数国家/地区,对存储医疗信息有非常具体的要求。在决定正确的编程方法之前,他需要了解这些要求。此外,我的回复概述了他当前安全实施的具体问题。
    【解决方案3】:

    是的,如果您的网络服务器不知何故配置错误,您的 php 源代码可能会被“泄露”(作为文本交付,而不是执行)。

    由于某些 web 服务器混乱导致 php 页面被传递而不是执行 happened to facebook in 2007 导致的代码泄漏。

    【讨论】:

      【解决方案4】:

      关于

      是的,你的 php 有可能 源被“泄露”(交付为 它是文本,而不是 执行)如果你的网络服务器不知何故 配置错误。

      一个很好的预防措施是将 所有 PHP 文件(除了 bootstrap/index 文件)放在 public_html/htdocs/www 或任何目录之外。
      您可以使用 ZendGuard 之类的工具。
      您可以简单地决定将敏感数据编译为 PHP 扩展(基本上,只有常量)。

      请记住,没有 100% 的保护。

      【讨论】:

        【解决方案5】:

        出于好奇,你熟悉Google Health吗?

        【讨论】:

          【解决方案6】:

          如果您受保护的商标信息,那么最好的办法是对其以及您存储的任何密码进行加密。

          这将确保即使有人闯入您的系统,他们也无法进入。

          您可以做两件事之一,一是有一个特殊的密码保护页面,您可以在其中粘贴具有加密对称密钥的公钥/私钥对的私钥。

          这将确保除非您拥有正确的私钥,否则您将无法获得对称密钥。

          私钥可以存储在U盘上,粘贴到特殊网页后即可删除。

          此表单完成后将立即读取对称密钥,并将其存储在全局变量中,以便应用程序中的任何页面都可以使用它。

          私钥在被使用后会立即被清除,以限制它被写入硬盘的机会。

          这个系统并不完美,但应该能够通过安全审核并保护您的信息免受黑客的任何成功攻击。

          【讨论】:

            【解决方案7】:

            为每个应用程序创建 mysql 用户,并为该用户提供正常工作所需的最少权限。大多数应用程序只需要选择、更新和删除。 http://en.wikipedia.org/wiki/Principle_of_least_privilege

            您的 mysql root 用户拥有超级用户的特殊权限。假设您达到了最大连接限制。 MySQL 总是为超级用户保留最后一个连接,这样你就可以进入那里并管理盒子、终止连接等。

            如果您在 Web 应用程序中使用 root,那么您可能会被锁定在自己的数据库之外。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-03-28
              • 2017-10-08
              • 2018-10-25
              • 2014-07-24
              • 2011-07-11
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多