Как скрыть определенный тип файла, используя apache .htaccess? - PullRequest
14 голосов
/ 18 мая 2010

Прошло много времени, так как мне нужно было взломать файл .htaccess ...

Какой самый простой способ 40x запретить доступ к определенному расширению файла через весь сайт?

Ответы [ 6 ]

23 голосов
/ 18 мая 2010
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Загружен некоторыми распространенными расширениями, добавляйте больше по мере необходимости.

12 голосов
/ 18 мая 2010

Если вы действительно хотите 404 (а не 403), вы можете использовать mod_rewrite:

RewriteEngine on
RewriteRule \.ext$ - [R=404]
4 голосов
/ 18 мая 2010
<FilesMatch "\.ext$">
    Deny from all
</FilesMatch>

См. Документацию Apache по FilesMatch и Запретить

РЕДАКТИРОВАТЬ : Artefacto дает хорошую точку , возвращает 403, а не 404, если это важно для ваших целей

2 голосов
/ 11 июля 2016

Вы также можете запретить доступ к расширениям файлов, используя директиву RedirectMatch:

RedirectMatch 403 ^/.+\.(php|html|gif)$

Это вернет 403 запрещенную ошибку для клиентов, если они запросят любой URI, который заканчивается на .php или .html или .gif. Вы можете добавить больше расширений в шаблон, используя полосу |.

0 голосов
/ 15 июня 2019

@ Дарио имеет правильное представление о типах файлов, и его также можно использовать для определенных файлов и каталогов. Единственное, чего не хватает - это управлять чувствительностью к регистру.

Я натолкнулся на эту статью, которая дает некоторые подробности о регистрозависимости RedirectMatch, а также предлагает не учитывать регистр символов.

Когда дело доходит до перенаправления большинства запросов, все равно все строчные. Или вы можете использовать RewriteRule, чтобы установить регистронезависимость. Но в некоторых ситуациях полезно знать, что вы также можете бросить с RedirectMatch, просто добавив (?i) к правилу.

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)
0 голосов
/ 14 января 2018

Мне нравятся ответы @Chris Lawlor и @ starkeen, и, поскольку OP спросил о "40x", я собираюсь предложить перенаправление на ошибку 404, поскольку она не выдает факт существования файлов.

Это то, что я сейчас использую в одном из моих проектов:

# Hide files not concerning the user
RedirectMatch 404 \.(htaccess|htpasswd|ini|log|sh|inc|bak|bkp|sql)$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...