【发布时间】:2011-02-21 01:08:25
【问题描述】:
很久没有破解 .htaccess 文件了...
40 倍阻止对整个网站的特定文件扩展名的访问的最简单方法是什么?
【问题讨论】:
很久没有破解 .htaccess 文件了...
40 倍阻止对整个网站的特定文件扩展名的访问的最简单方法是什么?
【问题讨论】:
<FilesMatch "\.ext$">
Deny from all
</FilesMatch>
请参阅 FilesMatch 和 Deny 上的 Apache 文档
编辑:Artefacto 生成good point,如果这对您的目的很重要,这将返回 403,而不是 404
【讨论】:
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$">
Order Allow,Deny
Deny from all
</FilesMatch>
加载了一些常见的扩展,根据需要添加更多。
【讨论】:
如果你真的想要一个 404(而不是 403),你可以使用 mod_rewrite:
RewriteEngine on
RewriteRule \.ext$ - [R=404]
【讨论】:
Redirect 404,参考:Requests to .htaccess should return 404 instead of 403 和RedirectMatch 404,参考:Make .git directory web inaccessible - 只是在这里聚集一点。
RewriteEngine on RewriteRule \.lfpt$ - [R=404] 显示文件。 URL 重写在网站的其他地方工作。
\.lfpt$) 匹配以.lfpt 结尾的所有内容,如果你有一个名为lfpt 的文件,它不会匹配但会显示它。如果您的文件名为anythinghere.lfpt,则它是匹配的。 \. 是转义的 .。
您还可以使用RedirectMatch 指令拒绝对文件扩展名的访问:
RedirectMatch 403 ^/.+\.(php|html|gif)$
如果客户端请求任何以 .php 或 .html 或 .gif 结尾的 uri,这将为客户端返回 403 禁止错误。您可以使用条形 | 向模式添加更多扩展。
【讨论】:
我喜欢@Chris Lawlor 和@starkeen 的回答,因为 OP 询问“40x”,所以我建议重定向到 404 错误,因为它不会泄露文件存在的事实。
这是我目前在我的一个项目中使用的:
# Hide files not concerning the user
RedirectMatch 404 \.(htaccess|htpasswd|ini|log|sh|inc|bak|bkp|sql)$
【讨论】:
@Dário 对文件类型有正确的想法,它也可以用于特定的文件和目录。唯一缺少的是管理区分大小写。
我遇到了this article that gives some detail about case-sensitive RedirectMatch,还建议不要区分大小写。
当涉及到重定向大多数请求时,无论如何它都是小写的。或者您可以使用
RewriteRule来建立不区分大小写的功能。但在某些情况下,很高兴知道您也可以通过简单地将(?i)添加到规则中来滚动RedirectMatch。
RedirectMatch 403 /\$\&
RedirectMatch 403 (?i)/\.(bash|git|hg|log|svn|swp|tar)
RedirectMatch 403 (?i)/(1|contact|i|index1|iprober|phpinfo|phpspy|product|signup|t|test|timthumb|tz|visit|webshell|wp-signup).php
RedirectMatch 403 (?i)/(author-panel|class|database|manage|phpMyAdmin|register|submit-articles|system|usage|webmaster)/?$
RedirectMatch 403 (?i)/(=|_mm|cgi|cvs|dbscripts|jsp|rnd|userfiles)
【讨论】: