使用运行docker容器的用户无法访问php文件的容器?

时间:2017-09-22 13:10:26

标签: php docker containers dockerfile

我需要知道是否有可能创建一个运行我的php应用程序的容器,我的一些php文件无法从docker外部访问。

Docker机密无法应用于此案例,也无法应用于其他情况。

有什么我可能忽略的吗?

编辑: 显然这是不可能的,我仍然需要详细解释为什么这是不可能的。

Edit2:我们需要让docker中的文件无法访问(因此代码无法读取)给运行容器的用户。打开端口80以通过apache执行/运行脚本不是问题。

3 个答案:

答案 0 :(得分:2)

我知道您打算以某种方式通过Docker分发您的应用程序,并且不希望运行容器的用户读取PHP代码。

这个问题不是Docker要解决的问题,因为运行容器的用户可以访问容器文件系统。

隐藏源代码的问题通常由特定于编程语言的工具处理。有些工具会尝试加密源代码并在运行时对其进行解密。其他工具试图模糊源代码,因此很难被理解。

为PHP执行此操作的一些工具:

http://www.phpprotect.info/ http://www.semanticdesigns.com/Products/Obfuscators/PHPObfuscator.jsp

您可以在将代码添加到正在构建的图像之前应用这些工具。 但请注意,所有这些工具/技术都可以由非平凡用户反转。

要真正保护代码,您应该创建许可证或托管服务,并且只公开API。

答案 1 :(得分:1)

首先,不清楚隐藏/不可访问来自docker 之外的含义。

您希望将此限制为哪个端口或方法?从物理上讲,不可能拒绝root或管理员查看某些内容,特别是当它需要同时执行时。

当您谈论http /端口80时,您当然可以限制文档根目录中的文件,或者一般来说可以从外部看到什么,以及什么不可以看到。

其次,隐藏无法访问之间存在很大差异。您可以尝试尽可能隐藏内容,使用隐藏文件夹和隐藏文件夹结构。但它不会阻止管理员查看或访问该文件。

此时,您的问题含糊不清,我们不知道您的目标以及在什么情况下您想要什么。

<强>更新

您可以使用各种工具加密PHP代码,例如Zend Guard。 Zend是PHP背后的公司。这适用于像您这样的情况,它允许PHP应用程序和代码加密的许可。

答案 2 :(得分:1)

您是否可以将限制文件放在自己的服务器上,就像SaaS应用程序一样。如果没有,那么混淆和其他工具是我认为最好的选择。