【问题标题】:Open Source and how it works for secure projects? [closed]开源以及它如何用于安全项目? [关闭]
【发布时间】:2009-10-28 08:58:19
【问题描述】:

我一直想让我们公司的一些产品开源..但是我们的源代码中有很多东西会使我们容易受到攻击。在大多数开源项目中这是如何处理的?例如,我们使用一些自定义 Web 服务对我们的数据库执行操作(添加帐户、删除帐户等)。源代码必须包含我们用来使用 Web 服务的密钥(密码)。如果有人愿意,他们可以获取源代码,获取使用我们网络服务的密钥,然后破坏我们的数据库。

这些只是不应该开源的项目吗?还是将敏感内容放在文件或其他内容中而不包含该部分是否很常见? (尽管这样做,会使源代码对公众毫无用处,因为它会失去其功能)。

任何关于开源项目的链接或资源以及应该如何处理这些东西都会很好。

谢谢

【问题讨论】:

  • 为什么要开源产品?如果你这样做是因为你认为你会得到很多免费的开发,那不是它的工作方式。人们只会在他们使用的项目上工作,他们只会使用为他们提供一些价值的项目。

标签: security open-source


【解决方案1】:

密码和敏感数据最好不要包含在源文件中。如果您查看像 PHPMyAdmin 这样的开源软件的设计,则会提供一个配置文件来添加这些信息,并且通常存储在 webhost 的根文件夹中(或 www 文件夹之外的任何位置)。

所以我们的想法是,如果您的网站使用某些信息链接到服务,您也应该将它们隐藏在一个文件中,并要求您的用户提供密码并创建自己的帐户。

【讨论】:

    【解决方案2】:

    难道不能将您的敏感数据放入配置文件吗?这也将允许其他用户轻松添加自己的敏感信息等。

    【讨论】:

    • 配置文件可能不适用于所有情况。通常我们会使用数据库/xml文件来存储设置。
    【解决方案3】:

    您不应将敏感数据公开,因此一种选择可能是为服务创建一个公共 API,然后用户需要创建一个帐户来获取数据的 API 密钥。

    我认为这不应该阻止您开源产品,但我认为您需要重新考虑通过公共 API 处理数据的方式。

    【讨论】:

      【解决方案4】:

      如果您在代码中硬编码数据库密码,那么您做错了。正如其他人指出的那样,您应该将其存储在一个单独的受保护的配置文件中。

      如果您分发您的代码,无论是源代码还是二进制文件,该密码就在那里,任何愿意这样做的人都可以恢复。二进制文件中的硬编码密码对于黑客来说通常很容易恢复。

      【讨论】:

        【解决方案5】:

        尽管程序代码是开源的,但您的敏感数据却不是。切勿将您的数据“提供”给他人。

        通常,单向哈希验证已经可以用作基本加密。 如果需要额外的安全性,请使用额外的措施,例如公钥和私钥以及预共享密码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-24
          • 2013-03-04
          相关资源
          最近更新 更多