关于安全:在开发过程中保护源代码不被窃取

Protecting source code from theft during development

在开发过程中是否有任何方法可以保护我的代码,以便开发人员离开我的公司时,他们无法访问我的项目中的文件?

对于本地下载、缓存和可供脱机使用的项目的TFS,这一点尤其重要。理想情况下,如果没有有效的Active Directory用户ID,代码将无法读取。

即使这个想法是不可能的,我想学习任何你能想到的实际威慑…


您必须向开发人员提供某种形式的信任。如果你不能相信他们不带源代码,你怎么能相信他们不在你的系统中建立后门之类的东西呢?

此外,如果他们要处理代码,他们需要访问它,如果他们能够访问它,他们几乎可以肯定地复制它。你可以试着限制它,但它是你试图超越预先思考的一群人谁只需要找到一个你犯的错误。此外,公开不信任你的开发人员对你没有任何帮助。

你的代码中是否有真正的商业秘密?如果是这样,你可能想重新考虑一下。如果不是的话,它会对别人造成多大的伤害?他们不能合法地使用它,离开的开发人员通常可以写类似的东西。

为此,你需要法律保护,而不是技术保护。


假设他们能够在代码存在的时候阅读和编译代码,那么你就没什么能做的了(除非你禁止U盘、CR编写器、扫描他们所有的电子邮件等,即使这样,他们也会找到一种方法来解决这个问题)。

在雇佣合同中说明,如果代码出现,将会有法律诉讼。

(我在过去的生活中遇到过这种情况——一个员工确实带着代码。我们知道这是因为他在做这件事时犯了一个错误,我们给我们的外行写了一封信,指出他向任何人透露密码的后果。似乎有用)


如果您担心代码整体丢失(而不是员工复制粘贴部分代码)。

使用源代码管理系统(您有一个,对吗?),您可能有一些钩子,这样当用户获取代码时,它的一部分是一个二进制文件,它只专门用于该用户,并且对于代码正确编译和运行是必需的…如果你走极端,那就意味着拥有正确的硬件系统(TPM、硬件密钥等)。

所以,当你按照保罗的建议处理完所有的文件之后,例如,如果代码在任何地方泄漏,你就可以跟踪谁是错误的(并且知道这可能会阻止任何人真正尝试)。


这真的不是加密问题。但有一个答案。

1)您应该限制开发人员,只允许他们访问完成工作所需的源代码。这是"最小权限访问"的安全原则。如果需要,在源代码管理中存储库或可执行文件的二进制文件。

2)强制所有开发商签订保密合同。你可以起诉的高级开发人员。因为在印度立即捍卫这项合同比在印第安纳州捍卫更困难。


所有的事情都考虑到了…否(尤其是如果项目如您提到的那样存储在本地)。如果开发人员有权访问源代码,他们就有能力窃取源代码。但是为了阻止这类事情,你需要一个律师起草一份保密协议(NDA)并让你的开发者签署它。

从维基百科来看,保密协议是:

a legal contract between at least two parties that outlines confidential material, knowledge, or information that the parties wish to share with one another for certain purposes, but wish to restrict access to by third parties. It is a contract through which the parties agree not to disclose information covered by the agreement.


有一些方法可以保护您的整个开发环境,这样程序员就可以保存或携带他们正在工作的东西的纪念品。查看www.chaperon-secure.net,了解从安全开发环境到保险存储源代码库的可能解决方案。


如果您的应用程序干净地内置在组件/模块/插件中,您可以在一定程度上降低代码盗窃的风险。只允许开发人员对他们所处理的组件进行代码访问,并为应用程序的其余部分编译代码。当然,我是这样想的:假设只值得窃取整个应用程序,而不只是一小部分组件。

另一方面,您会惊讶于代码本身并不总是像您想的那样有价值。如果代码中没有可直接转卖的敏感IP,那么您的开发人员是否只需重新编译,并使用他们自己的应用程序与您进行直接对话?