【发布时间】:2016-10-11 14:04:57
【问题描述】:
(这里是php/apache初学者)
简介
通过 PHP 使用 Apache(作为 Windows 上的服务)我已经意识到,虽然默认情况下网络用户只能访问 \htdocs 内容,但 PHP 脚本本身可以在任何地方读取(不限于\htdocs)。如果我们不确定 PHP 脚本的内容并希望限制文件系统访问会发生什么?
问题
假设我们希望允许人们更改 .php 文件的内容,但同时应用文件系统级别限制。例如:script1.php 可以读/写/执行任何东西 c:\apache\htdocs。它可以从 c:\f1\ 只读但可以不完全访问任何其他目录。
问题
如何确保他/她的 PHP 程序在 Windows 中读取或写入时具有非常特定的权限(例如,file_exists()、mkdir()、proc_open()、fwrite()、GD:imagejpg())在\htdocs之外?
其他想法
我了解到 apache 作为服务以 LocalSystem 帐户运行在大多数本地路径上具有完全读写 (777) 权限。 1
- 如果我创建一个新的(虚拟?)用户帐户,将其分配给 apache 服务并根据我的喜好更改该特定帐户的 [rwx] 权限,是否正确?
- 有没有办法为不同的 PHP 脚本创建不同的组限制? 例如。除了
c:\apache\htdocs,script1.php也可以在c:\f1中读写,而script2.php 可以在c:\f2中只读 - 此外,是否可以创建一个“权限管理器”——一个 PHP 脚本,在执行时将权限分配给其他 php 脚本? 例如所有小于 120 字节的 .php 脚本都可以读写
c:\f1
感谢您的宝贵时间,
-福蒂斯
【问题讨论】:
-
如果您使用的是过时/旧版本的 php,则可以使用 php safe mod。并且有多种监禁脚本的方法,例如chroot。但是如果您不确定 php 代码,为什么首先允许它靠近您的服务器?最好的安全措施就是不允许任何可疑代码靠近您的系统。
-
谢谢@Marc B! chroot/safe_mode 上的精彩阅读 - 幸运的是,我不是为他人提供服务的 shared-host,所以我不打算在我的系统中允许可疑的 PHP 代码。我对沙盒可以达到的水平更好奇:我对自己对保护 Apache/PHP 的理解不是很有信心,因此担心可能存在的安全漏洞。我认为实施外部限制(即在文件系统上)将包含任何损害的性质和程度。另外,错误的代码也会造成很大的破坏(删除、覆盖错误目录上的文件);-)
标签: php windows apache permissions user-accounts