开源技术及其如何为安全项目提供帮助?

10
我一直希望将我们公司的某些产品开源...但我们的源代码中有很多东西会使我们变得脆弱。在大多数开源项目中是如何处理这个问题的?例如,我们使用一些自定义Web服务来执行对我们的数据库的操作(添加帐户、删除帐户等)。源代码必须包含我们用于使用Web服务的密钥(密码)。如果有人想要,他们可以获取源代码,获得使用我们Web服务的密钥,并对我们的数据库造成破坏。
这些只是不应该开源的项目吗?还是通常只需将敏感信息放在文件或其他地方而不包括该部分?(虽然这样做,对于公众来说源代码就失去了功能)
有关开源项目以及应该如何处理此类事情的链接或资源将很好。
谢谢

1
为什么你想将产品开源?如果你这样做是因为认为会得到大量免费开发,那并不是实际情况。人们只会参与他们使用的项目,并且只会使用给他们提供某些价值的项目。 - kdgregory
5个回答

9

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

因此,如果您的网站使用某些信息链接到服务,则也应将其隐藏在文件中,并要求用户提供密码并创建自己的帐户。


3

把您的敏感数据放入配置文件中,这样其他用户也可以轻松添加他们自己的敏感信息等。


配置文件可能不适用于每种情况。通常我们会使用数据库/ XML 文件来存储设置。 - Raptor

2

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

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


2
如果你在代码中硬编码数据库密码,那么就是错误的做法。正如其他人指出的那样,你应该将其存储在单独且受保护的配置文件中。
如果你分发你的代码,无论是源代码还是二进制文件,这个密码都会被公开,任何有兴趣的人都可以恢复它。在二进制文件中硬编码的密码通常对于黑客来说是一个微不足道的问题。

1

尽管程序代码是开源的,但您的敏感数据并不是。永远不要“提供”您的数据给他人。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接