2017-04-10 41 views
-4

我们已经构建了一个构建于我们自己的MVC框架上的大型自定义PHP项目。该框架结构良好,文件组织良好,并分解为特定的页面/方法/类。大型PHP项目:将文件访问限制为仅限开发人员需要的文件的最佳实践

我的主要编码器和我继续工作的代码,我们有完全的访问权限。我可以信任我的主编码器,但现在我需要聘请更多的帮助。我发现了一些很棒的编码器,但我担心让他们通过FTP访问我们的系统开始工作,我不敢让他们访问所有文件!

我的主要问题是:我该如何让开发人员只访问他需要修改的特定文件?

我曾考虑使用ionCube或类似的东西加密整个项目,然后只解密特定文件,但这是一个繁琐的解决方案。另一个想法是在主代码中将PHP include()语句添加到他将要处理的文件中,从而将这些语句限制为一个文件夹并允许他访问该文件。这也很麻烦,因为关键字范围等可能成为一个问题。此外,开发人员在他自己的文件中编码只是一个部分修复,因为他需要查看其他一些关联文件的内容以获取方法/函数/类。只需选择开发人员可以访问的文件列表并且不允许他查看其他文件将会很好。这将允许我为开发人员开放一个足够小的窗口,让他们自由编码,而无需对他/她进行微观管理(或将开发人员自己写入主要文件的代码)。

这真的归结为保护代码库。我没有企业发展经验,所以我不确定“大个子”是如何做到的。任何建议/指引我在正确的方向将是一个主要帮助!

+1

“该框架结构良好,文件组织良好”,不,它不是。如果这是不会成为问题的。你也应该雇用你信任的人。 – Chris

+4

“大家伙”雇用他们可以信任的人。 – CollinD

+2

^^并且拥有适当的非公开合同 – nogad

回答

1

显然你的项目结构不是很好。否则,您可以将其拆分为单独的存储库,其中每个单独的存储库都“不在上下文中”,因此在“窃取业务逻辑”方面仍然无用,但足以执行一些开发操作...

尝试将其拆分将零件分离为包,然后将它们放到您的vendor目录中,其中每个包都有其自己的git存储库。

然后(您猜对了)您无需担心就授权访问特定的回购协议,您的整个“代码”就会被盗用。

但是除此之外,您应该首先信任您雇用的人!

+0

我绝对相信我的家伙,但你怎么能信任新雇员。我有NDA,我只是不想首先下去这条路线!这主要是针对编码人员,并且我们建立了信任关系。 – Dave

+0

但是,我在“完全独立的存储库”答案中看到了您的观点。这些文件几乎是这样,但我需要打破一些核心逻辑。 – Dave

0

首先,这不像问题提示所暗示的那样糟糕。在现场系统的情况下,假设一家公司遭受数据泄露,结果是因为开发人员流氓无赖,从配置文件中查找数据库凭证,然后滥用这些知识;该员工显然是有罪的,但该公司也会疏忽并可能被追究责任,因为通过编码或其他方式,他们已经采取措施阻止首先访问证书,但他们并不打扰。如果公司没有尽最大努力来保护启用安全漏洞的数据库证书。

大型组织可能会有一个变更控制团队负责部署变更,这样任何开发人员都无法访问实时系统。可以做类似的事情,开发人员对代码进行更改,第三方在部署到实时系统之前审查更改。这不是微观管理,但要确保额外的一双眼睛能够检查已完成的工作,可能产生的影响,并且有机会发现无意的错误。审阅者对于部署的更改没有情绪上的投入,而是担心他们将要对系统做什么,数据库是否发生了变化,什么时候是最佳部署时间,谁会影响,如何回滚需要知道谁需要更改等等。开发人员可能不会考虑这些事情。使用实时系统上的版本控制作为轻松回滚以及录制内容的方式也非常有效。

如果希望阻止一组开发人员在开发过程中看到一些代码,那么编码肯定是一种可能性,而这可能是出于法律原因而不仅仅是个人的需要。这可以通过针对每组代码限制不同的存储库来实现,并且开发人员可以使用该工具在某些版本或其他版本中获取代码的受保护版本。一种相关的方法可能是使用编码版本的文件来维护阴影库。这可以使用源存储库上的post commit钩子进行更新,并允许开发人员仅访问编码存储库以在其外部配置中引用(以使用SVN说法)。