— запрещение доступа к указанной директории. Параметры такие же, как у команды
allow from
, только в данном случае закрывается доступ для указанных адресов, доменов и т.д.;
□
Order параметр
— очередность, в которой применяются директивы
allow
и
deny
. Может быть три варианта:
•
Order deny, allow
— изначально все разрешено, потом первыми применяются запреты, а затем разрешения. Рекомендуется использовать только на общих директориях, в которые пользователи могут
самостоятельно закачивать файлы, например, свои изображения;
•
Order allow, deny
— сначала все запрещено, вслед за этим применяются разрешения, затем запрещения. Рекомендуется применять для всех директорий со сценариями;
•
Order mutual-failure
— исходно запрещен доступ всем, кроме перечисленных в
allow
и в то же время отсутствующих в
deny
. Советую использовать для всех каталогов, где находятся файлы, используемые определенным кругом лиц, например, администраторские сценарии;
□
Require параметр
— позволяет задать пользователей, которым разрешен доступ к каталогу. В качестве параметра можно указывать:
•
user
— имена пользователей (или их ID), которым разрешен доступ к каталогу. Например,
Require user robert FlenovM
;
•
group
— названия групп, пользователям которых позволен доступ к каталогу. Директива работает так же, как и
user
;
•
valid-user
— доступ к директории разрешен любому пользователю, прошедшему аутентификацию;
□
satisfy параметр
— если указать значение
any
, то для ограничения доступа используется или логин/пароль или IP-адрес. Для идентификации пользователя по двум условиям одновременно надо задать
all
;
□
AllowOverwrite параметр
— определяет, какие директивы из файла .htaccess в указанном каталоге могут перекрывать конфигурацию сервера. В качестве параметр можно указать одно из следующих значений:
None
,
All
,
AuthConfig
,
FileInfo
,
Indexes
,
Limit
и
Options
;
□
AuthName
— домен авторизации, который должен использовать клиент при определении имени и пароля;
□
Options [+ | -] параметр
— определяет возможности Web-сервера, которые доступны в данном каталоге. Если у вас есть директория, в которую пользователям разрешено закачивать картинки, то вполне логичным является запрет на выполнение в ней любых сценариев. Не надо надеяться, что вы сумеете программно запретить загрузку любых файлов, кроме изображений. Хакер может найти способ закачать злостный код и выполнить его в системе. С помощью опций можно сделать так, чтобы сценарий не выполнился Web-сервером.
Итак, после ключевого слова можно ставить знаки плюс или минус, что соответствует разрешению или запрещению опции. В качестве
параметр
указывается одно из следующих значений:
•
All
— все, кроме
MultiView
. Если указать строку
Option + All
, то в данном каталоге будут разрешены любые действия, кроме
MultiView
, который задается
отдельно;
•
ExecCGI
— разрешено выполнение CGI-сценариев. Чаще всего для этого используется отдельная директория /cgi-bin, но и в ней можно определить отдельные папки, в которых запрещено выполнение;
•
FollowSymLinks
— позволяет использовать символьные ссылки. Убедитесь, что в директории нет опасных ссылок и их права не избыточны. Мы уже говорили в разд. 3.1.3 о том, что ссылки сами по себе опасны, поэтому с ними нужно обращаться аккуратно, где бы они ни были;
•
SymLinksIfOwnerMatch
— следовать по символьным ссылкам, только если владельцы целевого файла и ссылки совпадают. При использовании символьных ссылок в данной директории лучше указать этот параметр вместо
FollowSymLinks
. Если хакер сможет создать ссылку на каталог /etc и проследует по ней из Web-браузера, то это вызовет серьезные проблемы в безопасности;
•
Includes
— использовать SSI (Server Side Include, подключение на сервере);
•
IncludesNoExec
— использовать SSI, кроме
exec
и
include
. Если вы не используете в сценариях CGI эти команды, то данная опция является предпочтительнее предыдущей;
•
Indexes
— отобразить список содержимого каталога, если отсутствует файл по умолчанию. Чаще всего, пользователи набирают адреса в укороченном формате, например, www.cydsoft.com. Здесь не указан файл, который нужно загрузить. Полный URL выглядит как www.cydsoft.com/index.htm. В первом варианте сервер сам ищет файл по умолчанию и открывает его. Это могут быть index.htm, index.html, index.asp или index.php, default.htm и т.д. Если один из таких файлов по указанному пути не найден, то при включенной опции
Indexes
будет выведено дерево каталога, иначе — страница ошибки. Я рекомендую отключать эту опцию, потому что злоумышленник может получить слишком много информации о структуре каталога и его содержимом;
•
MultiViews
— представление зависит от предпочтений клиента.
Все выше описанные директивы могут использоваться не только в файле /etc/httpd/conf/httpd.conf, но и в файлах .htaccess, которые могут располагаться в отдельных директориях и определять права этой директории.
Права доступа могут назначаться не только на директории, но и на отдельные файлы. Это описание делается между двумя следующими строками:
<Files ИмяФайла>
</Files>
Это объявление может находиться внутри объявления прав доступа к директории, например:
<Directory /var/www/html>
Order allow,deny
Allow from all
<Files "/var/www/html/admin.php">
Deny from all
</Files>
</Directory>
Директивы для файла такие же, как и для директорий. Исходя из этого, в данном примере к подкаталогу /var/www/html разрешен доступ всем пользователям, а к файлу /var/www/html/admin.php из этой директории запрещен доступ абсолютно всем.