Безопасность: Запретите доступа к .hg /* через mod_rewrite

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

Например, я имею http://example.com/.hg/ и http://example.com/subrepo1/.hg/

Я добавил следующее к .htaccess:

<Files ~ "^\.(hg|ht)">
    Order allow,deny
    Deny from all
</Files>

Это - хорошее начало, поскольку оно запрещает доступа к началу файлов .hg и .ht, но это не запрещает доступа к файлам внутри .hg каталоги, поэтому если кто-то вводит, например http://example.com/.hg/branch, файл ответвления будет отображен в их браузере.

Что я должен сделать, чтобы удостовериться, что эти файлы не отображены пользователю? Я хотел бы отправить или 403 или 404 назад к браузеру, если кто-то пытается получить доступ к файлу в ком-либо .hg каталог на моем сервере.

Этот вопрос также важен для любого, веб-сайт которого является подверсией / репозиторий SVN.

6
задан Tex 2 March 2010 в 08:01
поделиться

3 ответа

Если вам не нужно использовать mod_rewrite, то вы можете просто сделать следующее:

RedirectMatch 404 /\\.hg(/|$)

(Полное раскрытие: ответ адаптирован для Mercurial из этого вопроса о том, как сделать то же самое для Subversion).

7
ответ дан 17 December 2019 в 00:08
поделиться

У вас всегда есть возможность разместить файлы .htaccess в этих папках и запретить любой доступ к этой папке.

Я полагаю, вам нужно решение, в котором вам не нужно помещать файлы .htaccess в каждую папку и подпапку?

Попробуйте следующее (при условии, что у вас есть ssh-доступ к веб-серверу):

  • Перейдите в DocumentRoot вашего сайта
  • , создайте файл .htaccess

Содержимое:

Order deny, allow
Deny from all
  • Выполните следующую команду:

    find. -type d -name .hg -exec cp ./.htaccess {} \;

  • После этого снова удалите файл .htaccess из корня документа

0
ответ дан 17 December 2019 в 00:08
поделиться

Это гораздо менее беспокоит, если вы просто держите репозитории вне DocumentRoot. Вероятно, вы используете hgweb или hgwebdir, для которых не требуется, чтобы файлы находились внутри DocumentRoot, поэтому не делайте этого. Поместите их в / home / hg / repos или что-то в этом роде и настройте свой hgwebdir.conf, чтобы он смотрел туда.

Единственная причина иметь репозитории внутри DocumentRoot - это включить статический http URL-адрес для mercurial, но это очень медленно, и hgweb всегда предпочтительнее, когда это возможно.

0
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: