Запретить пользователям открывать файлы через URL на веб-сервере lighttpd

1473
Daniel Jørgensen

У меня есть веб-сайт, который использует файлы JSON для хранения настроек. Эти файлы расположены во вложенной папке, так что это выглядит так /settings/settings.json.

Если я ввожу IP-адрес в локальной сети, http://192.168.1.1/settings/settings.jsonя вижу содержимое JSON. Мне нужно как-то предотвратить это, и я думаю, что смогу сделать это через файл .htaccess, но не уверен. Доменное имя ( 192.168.1.1) является динамическим и может время от времени меняться, поэтому мне нужно найти какой-то динамический способ его предотвращения.

1

1 ответ на вопрос

0
DavidPostill

Я могу видеть содержимое JSON. Мне нужно как-то предотвратить это

Если вы используете Apache, то вы можете использовать:

  • .htacessфайл

  • DirectoryБлок в httpd.conf(лучше производительность)

Если вы используете Lighttpd, то вы можете использовать:

  • url.access-denyДирективаlighttpd.conf

Смотрите ниже инструкции.


Apache - Использование .htacessфайла

Создайте .htaccessфайл в settingsкаталоге со следующим содержимым:

deny from all 

Это запретит доступ к любому файлу в этой папке.

Замечания:

Вам следует избегать использования файлов .htaccess полностью, если у вас есть доступ к файлу конфигурации основного сервера httpd. Использование файлов .htaccess замедляет работу вашего http-сервера Apache. Любая директива, которую вы можете включить в файл .htaccess, лучше задана в блоке Directory, так как она будет иметь тот же эффект с лучшей производительностью.

Исходный учебник по HTTP-серверу Apache: файлы .htaccess


Apache - Использование Directoryблока вhttpd.conf

Добавьте следующее в ваш httpd.confфайл

<Directory "/settings"> Require all denied </Directory> 

Lighttpd - Использование url.access-denyдирективы вlighttpd.conf

mod_accessМодуль используется, чтобы запретить доступ к файлам и каталогам.

  1. Отредактируйте /etc/lighttpd/lighttpd.confфайл следующим образом:

    vi lighttpd.conf 
  2. Добавьте следующий код для включения mod_access:

    server.modules += ( "mod_access" ) 
  3. Добавьте регулярное выражение следующим образом:

    # deny access to /settings $HTTP["url"] =~ "^/settings/" { url.access-deny = ("") } 
  4. Сохраните и закройте файл.

  5. Проверьте синтаксические ошибки:

    lighttpd -t -f /etc/lighttpd/lighttpd.conf 
  6. Если ошибок нет, перезапустите lighttpdвеб-сервер:

    service lighttpd restart 

Источник Lighttpd Запретить доступ к папкам / каталогам . Скрипт был изменен в соответствии с требованиями вопроса.


Дальнейшее чтение

Я не могу найти любой файл httpd.conf в моей системе. Я попытался найти его с помощью `find / -name httpd.conf`, но ничего не возвращается. Может ли оно иметь другое имя? Я использую lighttpd на вариант Debian Daniel Jørgensen 8 лет назад 0
@ DanielJørgensen Инструкции добавлены для Lighttpd. Файл /etc/lighttpd/lighttpd.conf/, но синтаксис отличается от Apache. DavidPostill 8 лет назад 0