防止直接访问网站的某些目录的最佳方法是什么?
1- 创建并放置.htaccess
我们要保护的每个目录中的文件并将下一行放入其中:
Deny from all
2- 创建并放置index.php
我们要保护的每个目录中的文件,并仅在其中放置下一行代码(这将重定向到网站的主页):
<?php header("Location: http://" . $_SERVER['HTTP_HOST']); ?>
3-其他东西(是什么?)
正如评论中提到的,最安全的方法是将内容或目录放置在 Web 服务器的公共文档根目录之外。这将确保即使 .htaccess 文件被删除或服务器不允许,也不会提供内容.htaccess
覆盖。
要确定您的文档根目录,您只需回显 PHP$_SERVER['DOCUMENT_ROOT']
多变的。所以如果你的根是/var/www/html
,您可以创建一个文件夹/var/www/protected_folder
Apache(或其他 Web 服务器)永远不会为其提供服务(除非更改 http.conf 文件以修改文档根文件夹)。
如果该文件夹必须位于文档根目录中,则使用.htaccess
文件到任一DENY
或重定向是一个不错的选择。
正如 TerryE 提到的,您还可以使用操作系统级别的文件权限来拒绝 Apache 用户访问该文件夹(将不同的用户设置为所有者,然后将文件夹的权限设置为700
, 例如)。如果他们尝试访问该文件夹,他们将收到您可能不想显示的 403 禁止错误(尽管您可以在中设置自定义 403 错误处理程序)http.conf
or htaccess
)。根据您具体想要执行的操作,您可能需要这种方法,因为它还可以让您阻止来自脚本的访问(即 PHPinclude()
等等)如果你愿意的话,因为 PHP 默认在 Web 服务器用户下运行。这种方法的主要缺点是,在迁移过程中通常不会保留文件权限(如果未正确完成),并且在使用递归标志更改父文件夹权限时,有时可能会无意中重置文件权限(而某人不太可能无意中重置文件权限)。将文件夹移动到文档根目录中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)