我已经完成了一个使用PHP
, Mysql
, HTML
和CSS
组合的web应用程序。我在安装在Ubuntu 12.0上的apache
上托管这个(在var/www/
作为根文件夹)。这意味着web应用程序将托管在客户端的本地计算机上。
这也意味着客户端可以访问位于var/www/
文件夹中的php文件,现在这里的问题是,他可以直接复制,删除或编辑php文件,当他想要的时候,这是不应该的。
我不希望客户端能够直接从文件夹访问文件,尽管他应该能够使用浏览器本地访问文件。
我在想是否有一种方法可以隐藏文件,或者更好的是一个文件夹锁,只能使用密码和非密码访问时,通过浏览器访问。
经过大量的研究,我似乎找不到一个更好的解决方案,如果有人对此有一个想法可以帮助我,我会很感激。非常感谢你的帮助这个问题的答案有多个方面:
- 为了保护文件不被修改/移动,你应该管理文件权限(避免给你的客户端root密码)
- 如果这是你担心的代码(即你不希望客户端看到/修改代码的代码),你应该寻找代码混淆工具(看这里:PHP有代码混淆器吗?) 在某些阶段,你必须信任你的客户。如果这不能实现,那么你将不得不在某个阶段获得一个新的客户端:)
有几个选项:
- 使用标准权限(使用chmod)将www-data设置为目录的所有者。不要允许任何人访问该目录。
- 使用标准权限(使用chmod)将自己设置为目录的所有者。设置group为www-data。不要允许任何人访问该目录。
- 安装acl包,为您提供更精细的权限,允许您为各种用户和组指定权限级别。(使用setfacl)。如果我有多个组需要对一个目录有不同的权限,我倾向于使用这个选项。
如果客户端对自己的本地环境至少没有sudo权限,那将是非常奇怪的。
如果客户端具有root访问权限或在sudoers文件中,那么更改文件的所有权或文件权限将不是一个解决方案。
如果客户端在sudoers文件中,他可以简单地执行sudo passwd root
来更改根密码,或者他可以执行sudo chown -R client:www-data /var/www/website
来获得对文件的访问权限,而不管权限如何(他当然也可以轻松更改)。
Bart建议,如果你想加密你的文件,Ioncube可能是一个可能的解决方案