.htaccess и deny from all

Многие веб-приложения используют .htaccess для ограничения доступа к определённым файлам и каталогам, которые могут содержать конфиденциальную информацию. Например, для того, чтобы ограничить доступ ко всем файлам в определенном каталоге вы можете создать .htaccess файл в этом каталоге, содержащем строку «deny from all». Во многих случаях это ошибка в безопасности. Причинами являются:

  1. Для того, чтобы файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла (значение директивы AllowOverride должно быть установлено All). Не все хостинги поддерживают .htaccess.
  2. Существует множество других популярных веб-сереверов. Например, nginx, который не поддерживает .htaccess.

А теперь рассмотрим два реальных примера недопустимости использования .htaccess.

Лог-файлы Zen Cart содержат параметры соединения с базой данных.

При установке Zen Cart создается лог-файл, который содержит разную служебную информацию, в том числе параметры соединения с базой данных. Ниже приведен скриншот такого лог-файла:

 

Понятно, что доступ к этому файлу должен быть защищен. Zen Cart использует ограничение по .htaccess и создает уникальное имя лог-файла. Первая защита оказывается бесполезной, если Zen Cart установлен на веб-сервер, который не поддерживает .htaccess, или, если AllowOverride выключен. Что можно сказать о уникально имени лог-файла? Имя файла:

 

Как вы видите имя лог-файла установки содержит префикс zcInstallLog с указанием даты, когда была установка и счетчик. Не сложно будет подобрать имя этого файла. В последней версии Zen Cart устранена эта уязвимость.

Файл конфигурации Magento

В отличие от Zen Cart, в Magento не придется подбирать имя файла. Конфиг хранится по адресу «/app/etc/local.xml». Этот файл содержит информацию по подключения к базе данных (сервер базы данных, имя базы данных, имя пользователя и пароль), а также другую конфиденциальную информацию. Чтобы ограничить доступ к этому файлу используется .htaccess. При правильной настройке AllowOverride вы не сможете получить доступ к этому файлу. Тем не менее, если вы устанавливаете приложение на веб-сервер Nginx, .htaccess ограничение не работает, и можно получить доступ к файлу конфигурации.

Решением проблем станет сохранения ваших лог-файлов и конфигурационных файлов в формате PHP. Не забывайте, чтобы лог-файлы не воспринимались как текст нужно добавить в начало файла:

<?php exit; ?>
В рубрике: Статьи, Уязвимости.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *