这是为了防止一个网站的某些目录被直接访问的最佳方式?
1 -创建和放置.htaccess
文件中我们要保护并在其中放置下一行的每个目录:
Deny from all
2 -创建和放置index.php
文件中,我们要保护并仅放置在它的代码(这将重定向到该网站的主页)的下一行的每个目录:
<?php header("Location: http://" . $_SERVER['HTTP_HOST']); ?>
3-别的东西(是什么?)
这是为了防止一个网站的某些目录被直接访问的最佳方式?
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提到的,你也可以使用OS级别的文件权限,以拒绝的文件夹的Apache用户访问(设置不同的用户作为所有者,然后对文件夹设置权限700
为例)。 如果他们尝试访问该文件夹,他们会得到它,你可能不希望显示(虽然你可以建立一个自定义403错误处理403 Forbidden错误http.conf
或htaccess
)。 根据具体情况,你试图做什么,你可能希望这种方法,因为它也可以让你阻止脚本的访问权限(即PHP include()
等),如果你想,作为PHP默认运行的网络服务器用户下。 这种方法的主要缺点是,文件权限往往不迁移过程中保留(如果他们没有做正确)和文件权限可以改变父文件夹的权限时,用递归标志(而这是不可能的,有时会无意中重置有人会在不经意间移动文件夹到文档根)。