Запретить доступ к одной конкретной папке в .htaccess

87

Я пытаюсь запретить пользователям получать доступ к папке "site/includes", манипулируя URL-адресом. Я не знаю, нужно ли мне все отрицать и вручную разрешать отдельные исключения, если я могу просто отказаться от этой папки или использовать функцию перезаписи, которая может быть использована.

Конкретный пример: я не хочу видеть файлы каталога, введя в URL-адрес "localhost/site/includes".

  • 1
    просто чтобы запретить перечисление каталогов пишите Options -Indexes в файле .htaccess, расположенном в корневой папке
Теги:
.htaccess

10 ответов

132
Лучший ответ

Создайте файл site/includes/.htaccess и добавьте эту строку:

Deny from all
  • 4
    Привет!! anubhava Я использовал это, чтобы отключить прямой доступ к моим файлам api в папке / api, но теперь все вызовы веб-службы отправляют 403 запрещенного статуса. Я просто хочу заблокировать доступ, когда кто-то обращается к нему из браузера.
  • 5
    Для веб-сервера нет реальной разницы между запросами между браузером и не браузером.
Показать ещё 5 комментариев
27

В файле .htaccess вам нужно использовать

Deny from  all

Поместите это в site/includes/.htaccess, чтобы сделать его специфичным для каталога includes

Если вы просто хотите запретить список файлов каталога, вы можете использовать

Options -Indexes 
21

Вы также можете запретить доступ к папке с помощью RedirectMatch

Добавьте следующую строку в htaccess

RedirectMatch 403 ^/folder/?$

Это вернет ошибку 403 forbidden для папки ie: http://example.com/folder/, но она блокирует доступ к файлам и папкам внутри этой папки, если вы хотите заблокировать все внутри папки, а затем просто измените шаблон регулярного выражения на ^/folder/.*$.

Другой вариант: mod-rewrite Если url-rewrting-module включен, вы можете использовать что-то вроде следующего в root/.htaccss:

RewriteEngine on

RewriteRule ^folder/?$ - [F,L]

Это будет внутренне отображать запрос на страницу ошибки folder to forbidden.

  • 1
    В Apache 2.22 лучшим решением является первое: RedirectMatch .....
  • 2
    RedirectMatch 404 ^ / folder /? $ Тоже работает
Показать ещё 1 комментарий
8

Мы установим, что каталог очень безопасный, запрещающий доступ для всех типов файлов. Ниже приведен код, который вы хотите вставить в файл.htaccess.

Order Allow,Deny 
Deny from all 

Поскольку мы теперь установили безопасность, мы теперь хотим разрешить доступ к нашим желаемым типам файлов. Чтобы сделать это, добавьте код ниже в файл.htaccess под кодом безопасности, который вы только что вставили.

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

ваш окончательный файл .htaccess будет выглядеть так:

Order Allow,Deny 
Deny from all 

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

Источник из Разрешить доступ к определенным типам файлов в защищенном каталоге

7

Вы можете создать файл .htaccess для папки, которой должен был запретить доступ с помощью

Deny from  all

или вы можете перенаправить на пользовательскую страницу 404

Redirect /includes/ 404.html
4

Вы также можете поместить этот IndexIgnore * в свой корневой файл .htaccess, чтобы отключить список файлов всех ваших каталогов веб-сайтов, включая sub-dir

  • 4
    Это не отключает список файлов, но говорит автоиндексору игнорировать все файлы при построении индекса. Чтобы отключить список файлов, вы должны использовать Options -Indexes .
2

Вы можете сделать это динамически следующим образом:

mkdir($dirname);
@touch($dirname . "/.htaccess");
  $f = fopen($dirname . "/.htaccess", "w");
  fwrite($f, "deny from all");
fclose($f);
2

Создание index.php, index.html, index.htm не является безопасным. Becuse, любой может получить доступ к вашим файлам в пределах указанного каталога, угадывая имя файла. Например: http://yoursite.com/includes/file.dat Поэтому рекомендуемый метод создает файл .htaccess, чтобы запретить всем посетителям;). Получайте удовольствие!

2

Кроме тех защищенных методов, которые я тоже мог опубликовать. Там есть настройки и менее безопасный способ сделать это, если каталог не был создан динамически.

Поместите пустой файл index.html в этот каталог:)

и если вы динамически создаете каталог:

mkdir($dirname, 0644); 
1

Просто поместите.htaccess в папку, которую вы хотите ограничить

## no access to this folder

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</IfModule>

Источник: источники MantisBT.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню