5

防止直接访问网站的某些目录的最佳方法是什么?

.htaccess1-在我们要保护的每个目录中创建并放置一个文件,然后在其中放置下一行:

Deny from all

index.php2-在我们要保护的每个目录中创建并放置一个文件,并仅在其中放置下一行代码(这将重定向到网站的主页):

<?php header("Location: http://" . $_SERVER['HTTP_HOST']); ?>

3- 别的东西(它是什么?)

4

1 回答 1

5

正如评论中提到的,最安全的方法是将内容或目录放在 Web 服务器的公共文档根目录之外。这将确保即使删除 .htaccess 文件或服务器不允许.htaccess覆盖,也不会提供内容。

要确定您的文档根目录,您可以回显 PHP$_SERVER['DOCUMENT_ROOT']变量。因此,如果您的根目录是/var/www/html,您可以创建一个文件夹/var/www/protected_folder,而 Apache(或其他 Web 服务器)将永远不会为它提供服务(除非 http.conf 文件被更改以修改文档根文件夹)。

如果该文件夹必须位于文档根目录中,那么使用.htaccess文件DENY或重定向是一个不错的选择。

正如 TerryE 所提到的,您还可以使用操作系统级别的文件权限来拒绝 Apache 用户访问文件夹(例如,将不同的用户设置为所有者,然后将文件夹的权限设置700为 )。如果他们尝试访问该文件夹,他们将收到您可能不想显示的 403 禁止错误(尽管您可以在http.conf或中设置自定义 403 错误处理程序htaccess)。具体取决于您要执行的操作,您可能需要这种方法,因为它还可以让您阻止脚本访问(即 PHPinclude()等)如果你愿意,因为 PHP 默认在 webserver 用户下运行。这种方法的主要缺点是文件权限在迁移过程中通常不会保留(如果它们没有正确完成),并且有时在使用递归标志更改父文件夹权限时会无意中重置文件权限(而不太可能有人会无意中将文件夹移动到文档根目录)。

于 2012-09-16T21:14:46.297 回答