当使用 Apache 提供站点服务时,我知道有两种方法可以将一些内容放置在“servername/foo”处:
- 将其放置在 Web 根目录中名为“foo”的文件夹下
- 创建别名
作为 #2 的示例,XAMPP 在配置文件中有以下语句:
Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
...这意味着“如果服务器是 localhost,并且有人访问 localhost/phpmyadmin,则向他们显示 C:/xampp/phpMyAdmin 的内容,给定遵循权限“”。
在此示例中,假设可以从同一 URL 访问 phpMyAdmin,从安全角度来看,它是否位于 Web 根文件夹中或只是看起来好像位于 Web 根文件夹中重要吗?
答案1
对于“常规”(静态)Apache,如果您将示例缩小到严格的 1:1 场景:不,这无关紧要。假设您混合使用并忘记了哪些权限在哪里继承,您可能会暴露一些您不想暴露的东西。
我认为最重要的是,它确实让一个单独的代码分支更容易被一个用户拥有(并因此可能被写入),而不是由你用于 Web 服务器和文档根目录的用户拥有。这是可靠打包所必需的,而可靠打包是长期安全的核心部分。
还要记住,apache 模块非常灵活。因此,虽然核心 apache 内容不会有任何不同,但第三方身份验证模块甚至 php 设置(如 open_basedir 和 include_path)可能会改变行为。
答案2
不。
Directory 语句适用于 DIRECTORY。此目录位于系统中的哪个位置并不重要。
请注意,问题中的缩进暗示别名和目录行之间存在某种关系,但实际上并不存在。