开源以及它如何用于安全项目?

时间:2009-10-28 08:58:19

标签: security open-source

我一直想让我们公司的一些产品开源......但我们的源代码中有很多东西会让我们变得难以理解。在大多数开源项目中如何处理?例如,我们使用一些自定义Web服务对我们的数据库执行操作(添加帐户,删除帐户等)。源代码必须包含我们用于使用Web服务的密钥(密码)。如果有人想要,他们可以获取源代码,获取密钥以使用我们的Web服务,并破坏我们数据库的破坏。

这些只是不应该是开源的项目吗?或者只是将敏感的东西放在文件或其他东西而不包括那部分是常见的? (虽然这样做会使公共资源对公众毫无用处,因为它会失去它的功能)。

开源项目中的任何链接或资源以及如何处理这类内容都会很不错。

由于

5 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:3)

是否无法将您的敏感数据放入配置文件中?这也将允许其他用户轻松添加自己的敏感信息等。

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

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

如果您分发代码,无论是源代码还是二进制代码,那么密码就在那里,任何关心密码的人都可以恢复密码。二进制文件中的硬编码密码对于黑客来说通常是一件微不足道的事情。

答案 4 :(得分:1)

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

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