首页 > 解决方案 > .htaccess 拒绝查看除本地主机以外的所有目录

问题描述

我似乎遇到了一种情况,即 .htaccess 文件能够通过拒绝服务器端 PHP 访问除加载小部件之外的所有内容来成功关闭我的网站。有没有办法防止用户嗅探站点的目录(即查找包含、图像目录等),同时允许服务器上的脚本仍然正确访问它们?如果是这样,我将如何去做?

我尝试关注另一个stackoverflow问题

order deny,allow
deny from all
allow from 127.0.0.1

但它也会产生同样的问题。例如,如果 /img/ 中的 .htaccess 文件包含这些行(并且仅包含这些行),则不会加载页面上的图像。

标签: php.htaccess

解决方案


由于您对共享主机的选择有限,首先要指出的是文件系统权限非常重要。如果用户能够利用您的站点并在您的 webroot 内的文件系统上写入或更改文件,那是非常糟糕的。文件系统权限不应允许 Web 进程将文件写入您专门为此目的设置的目录以外的任何目录中。

考虑到这一点,这里有一个解决方案,可以处理像 /img 目录这样的单个目录。

在 /img 目录中创建此 .htaccess 文件:

order allow,deny
<Files ~ "\.(jpg|jpeg|png|gif|bmp)$">
   allow from all
</Files>

这将允许访问图像文件的正常功能并禁止访问其他任何内容。

希望您还可以看到此处使用的模式,您将允许的文件扩展名列入白名单。如果需要,您可以将相同的想法用于您拥有的任何其他目录。


推荐阅读