Директива Directory Options и AllowOverride помогают создать правильный синтаксис.

  • Автор темы I AM
  • Обновлено
  • 18, May 2024
  • #1
Привет, у меня есть Apache 2.2, PHP 5.3, веб-сервер-обработчик SuPHP и моя цель это:
  • запретить пользователям/размещенным сценариям php/js выполнять pl, cgi, sh и другие потенциально опасные сценарии, которые не необходимы для запуска веб-сайтов php.
  • запретить посетителям сайта использовать символические ссылки на места вне их имени пользователя.


Чтобы сделать это, я нашел следующий код и включил его во все виртуальные хосты на сервере:

 <Directory "/">
Options +All +ExecCGI -FollowSymLinks +SymLinksIfOwnerMatch +Includes +IncludesNOEXEC -Indexes -MultiViews
AllowOverride None Options=Indexes,MultiViews
</Directory>


Код (разметка): (НО я думаю, что этот код неверен и, по крайней мере, в нем отсутствуют знаки «+», а также я разрешаю всем пользователям переопределять мои директивы в своих файлах .htaccess)

Поэтому я хочу ужесточить безопасность и обнаружил, что другие люди вместо этого советуют следующие конструкции:

 <Directory "/"> Options +All +ExecCGI -FollowSymLinks +Includes +IncludesNOEXEC -Indexes -MultiViews +SymLinksIfOwnerMatch AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch </Directory>


Код (разметка): или:

 <Directory "/"> Options +ExecCGI -FollowSymLinks -Includes +IncludesNOEXEC +Indexes -MultiViews +SymLinksIfOwnerMatch AllowOverride AuthConfig FileInfo Indexes Limit Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,FollowSymLinks </Directory>


Код (разметка): (я не понимаю как работает разрешить переопределение, я разрешаю переопределить все, а затем какой смысл использовать Options=, хотя я уже разрешил переопределение всех параметров, определив AllowOverride All?)

На данный момент это то, что я хочу использовать сейчас, и мне нужно попросить вас дать отзыв о том, как его улучшить:

 <Directory "/"> Options -ExecCGI -FollowSymLinks Includes IncludesNOEXEC Indexes -MultiViews SymLinksIfOwnerMatch AllowOverride All </Directory>


Код (разметка): Я сомневаюсь, следует ли мне использовать Option +All и AllowOverride None . В-третьих, это «-FollowSymLinks +SymLinksIfOwnerMatch», который, как я предполагаю (если размещенные веб-сайты, такие как Joomla, будут работать), потребует от меня настройки всех файлов .htaccess (на регулярной основе), чтобы они не содержали в них FollowSymLinks и вместо этого содержали FollowSymLinksIfOwnerMatch, если я не хочу люди увидят ошибку 500. Я хочу попросить мнение о том, как настроить вышеупомянутый код для обеспечения хорошей безопасности.

Я размещаю веб-сайты, которые могут быть взломаны, или сайты, владельцы которых могут намеренно злоупотреблять сервером, поэтому моя цель — максимальная безопасность.

Но в то же время я не хочу вызывать чрезмерную ошибку 500 в обычных CMS, таких как Wordpress, Joomla, Drupal. Спасибо

I AM


Рег
23 Jul, 2011

Тем
403760

Постов
400028

Баллов
2418908
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно