从客户端机器隐藏本地服务器上的php文件


Hide php files on local server from a client's machine

我已经完成了一个使用PHP, Mysql, HTMLCSS组合的web应用程序。我在安装在Ubuntu 12.0上的apache上托管这个(在var/www/作为根文件夹)。这意味着web应用程序将托管在客户端的本地计算机上。

这也意味着客户端可以访问位于var/www/文件夹中的php文件,现在这里的问题是,他可以直接复制,删除或编辑php文件,当他想要的时候,这是不应该的。

我不希望客户端能够直接从文件夹访问文件,尽管他应该能够使用浏览器本地访问文件。

我在想是否有一种方法可以隐藏文件,或者更好的是一个文件夹锁,只能使用密码和非密码访问时,通过浏览器访问。

经过大量的研究,我似乎找不到一个更好的解决方案,如果有人对此有一个想法可以帮助我,我会很感激。非常感谢你的帮助

这个问题的答案有多个方面:

    为了保护文件不被修改/移动,你应该管理文件权限(避免给你的客户端root密码)
  1. 如果这是你担心的代码(即你不希望客户端看到/修改代码的代码),你应该寻找代码混淆工具(看这里:PHP有代码混淆器吗?)
  2. 在某些阶段,你必须信任你的客户。如果这不能实现,那么你将不得不在某个阶段获得一个新的客户端:)

有几个选项:

  1. 使用标准权限(使用chmod)将www-data设置为目录的所有者。不要允许任何人访问该目录。
  2. 使用标准权限(使用chmod)将自己设置为目录的所有者。设置group为www-data。不要允许任何人访问该目录。
  3. 安装acl包,为您提供更精细的权限,允许您为各种用户和组指定权限级别。(使用setfacl)。如果我有多个组需要对一个目录有不同的权限,我倾向于使用这个选项。

如果客户端对自己的本地环境至少没有sudo权限,那将是非常奇怪的。

如果客户端具有root访问权限或在sudoers文件中,那么更改文件的所有权或文件权限将不是一个解决方案。

如果客户端在sudoers文件中,他可以简单地执行sudo passwd root来更改根密码,或者他可以执行sudo chown -R client:www-data /var/www/website来获得对文件的访问权限,而不管权限如何(他当然也可以轻松更改)。

Bart建议,如果你想加密你的文件,Ioncube可能是一个可能的解决方案