我有一个PHP Web应用程序(在Apache/Linux上运行),除其他外,它允许浏览Web服务器上的本地文件。由于Apache作为特殊的“www”用户运行,因此PHP可以访问“www”可以访问的所有内容,无论用户登录到应用程序。根据登录用户的访问权限限制PHP的文件访问
根据登录用户的Unix文件系统权限,限制文件访问的最佳方式是什么?理想情况下,我可以产生一个新的进程,用户ID是登录用户,但我不确定这是否可能。或者,是否有标准的PHP库在某处执行权限检查和访问文件?
我有一个PHP Web应用程序(在Apache/Linux上运行),除其他外,它允许浏览Web服务器上的本地文件。由于Apache作为特殊的“www”用户运行,因此PHP可以访问“www”可以访问的所有内容,无论用户登录到应用程序。根据登录用户的访问权限限制PHP的文件访问
根据登录用户的Unix文件系统权限,限制文件访问的最佳方式是什么?理想情况下,我可以产生一个新的进程,用户ID是登录用户,但我不确定这是否可能。或者,是否有标准的PHP库在某处执行权限检查和访问文件?
你可以看看在http://httpd.apache.org/docs/2.0/suexec.html它应该做你需要什么,而不需要让用户和权限的单独lsit在aplications。
据我所知,这个扩展是在一些(如果不是全部的话)共享主机服务上实现的,以控制资源在用户之间的分配方式。
这将导致脚本没有通过www-data(但由系统用户)执行,并且PHP不作为模块运行(通过CGI/fastCGI机制)。
这可以通过三个步骤来完成:
第1步似乎是确保在应用程序中未创建意外访问漏洞的好方法,但第2步仍然是我不清楚的部分。如何在访问本地文件时检查用户的身份验证状态?我如何模仿不同用户的各种PHP许可检查功能(如is_writeable,is_executable等)? – Stan 2011-06-02 14:05:58
我不明白你的意思了,因为访问该文件的用户是PHP的用户,而不是要求你的页面(你是不是连接到用SSH服务器)
你的一般用户可能希望在您的应用程序之上实施ACL来管理此权限。
当然Zend公司,并有解决方案:http://framework.zend.com/manual/en/zend.acl.html
谢谢,我认为这正是我所期待的。 – Stan 2011-06-02 18:32:15