当使用 Apache 为站点提供服务时,我知道有两种方法可以将一些内容放在“servername/foo”中:
- 将其放在名为“foo”的文件夹下的 Web 根目录中
- 创建别名
作为 #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 的内容,给定以下权限。”
在这个例子中,假设 phpMyAdmin 可以从同一个 URL 访问,从安全的角度来看,它是在 web 根文件夹中还是只是通过别名看起来好像它是一样的?
对于“常规”(静态)apache,如果您将示例缩小到紧密的 1:1 场景:不,没关系。假设如果您混合和混搭并忘记哪些权限在哪里继承,您可能会暴露一些您不想要的东西。
我认为最重要的是,与您用于网络服务器和文档根目录的用户相比,它确实使单独的用户拥有(并可能因此写入)不同的代码分支更容易。这是可靠包装所必需的,而可靠包装是长期安全的核心部分。
还要记住,apache 模块可以非常灵活。因此,虽然核心 apache 的行为不会有任何不同,但第三方身份验证模块甚至 php 设置(如 open_basedir 和 include_path)可以改变行为。
不。
Directory 语句适用于 DIRECTORY。该目录存在于系统中的哪个位置无关紧要。
请注意问题上的缩进暗示 Alias 和 Directory 行之间的某种关系,实际上并不存在。