.htaccess 拒绝从除本地主机之外的所有主机查看目录



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

我尝试遵循另一个堆栈溢出问题

order deny,allow
deny from all
allow from 127.0.0.1

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

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

鉴于此警告,这里有一个处理单个目录(如/img 目录)的解决方案。

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

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

这将允许正常运行以访问图像文件并禁止访问其他任何内容。

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

最新更新