我有一个项目运行一个带有前端 SPA 和 REST API 后端的网站。
目前,代码分为 /client 和 /server 文件夹,它们独立运行。但是,它们当前位于同一个存储库中。
如果我雇用一些只在客户端代码上工作的承包商,将其分成两个存储库并只给前端承包商提供客户端代码来处理是否有任何安全优势?
开发人员仍然可以将他们的本地开发环境连接到在云中运行服务器的开发环境。
我主要担心的是后端代码可能会被不可靠的开发人员出售给黑客,然后通过查看我们的代码来收集一些安全漏洞。
我有一个项目运行一个带有前端 SPA 和 REST API 后端的网站。
目前,代码分为 /client 和 /server 文件夹,它们独立运行。但是,它们当前位于同一个存储库中。
如果我雇用一些只在客户端代码上工作的承包商,将其分成两个存储库并只给前端承包商提供客户端代码来处理是否有任何安全优势?
开发人员仍然可以将他们的本地开发环境连接到在云中运行服务器的开发环境。
我主要担心的是后端代码可能会被不可靠的开发人员出售给黑客,然后通过查看我们的代码来收集一些安全漏洞。
它们可能一起形成一个解决方案,但代码本身在逻辑上是分开的。因此,有权访问一个存储库的人不一定需要访问另一个存储库。
向黑客出售漏洞是可能的,但这些黑客也可以在您的代码中找到相同的漏洞。更大的风险是将代码本身出售给竞争对手,或使用它来构建竞争产品。
虽然我没有指责你们的承包商这样做——他们很可能是诚实的人做诚实的工作——但有报道称承包商正是这样做的。他们花时间分析你的产品,甚至让员工回答他们的问题,一年后推出了一款竞争产品。虽然无法证明他们窃取了任何代码,但巧合实在是太巧合了。
根据您使用的版本控制系统,这可能不是一件容易的事。例如,如果您使用 Git,它并不像复制存储库并删除每个存储库的一半那么简单。Git 将所有旧文件保留在其历史记录中,因此可以访问“仅限客户端”存储库的本地副本的承包商仍然可以愉快地浏览服务器数据,直到拆分点(这可能足以构成恶意) . 新的承包商,然后检查新的“仅限客户端”存储库,仍然能够访问服务器数据。
“最简单”的方法是完全擦除旧存储库并使用各自的提交历史重新构建两个存储库。这可能需要一个小时到十年的工作,具体取决于存储库的大小。
可能有可用的自动化工具,或者您也可以为此编写自己的脚本。我从来没有遇到过这种情况,所以我没有任何实践经验。
当然,这仍然会给承包商留下您旧代码的本地副本,但是如果该代码最终出现在他们的机器上,则该代码必须已被视为已受到损害。但至少它会阻止未来的承包商获得它。