Развертывание Mercurial Repository в производство - проблемы безопасности и советы - PullRequest
12 голосов
/ 06 октября 2010

В своем исследовании я обнаружил некоторую обеспокоенность по поводу развертывания онлайнового приложения PHP, оставляя его папку «.hg» или «.svn» на рабочем сервере.К сожалению, я не смог найти четкого объяснения того, почему это вызывает беспокойство.Я хотел бы лучше понять эту угрозу безопасности.

Мне кажется, что вы не хотите, чтобы эти папки были видны больше, чем вы хотите, чтобы содержимое файлов PHP отображалось.Разве не было бы решение настроить веб-сервер так, чтобы он не обслуживал каталог «.hg»?Проблема безопасности идет глубже, чем это?Я действительно не знаю.Мы очень ценим вашу помощь!

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

  • Ускоренное развертывание из промежуточного этапа (вместо создания новой копии за развертывание)
  • Возможность простого и быстрого отката
  • Возможность проверки того, что производство остается неизменным (через hg st)

АльтернативыДобро пожаловать.

Спасибо!

Ответы [ 3 ]

8 голосов
/ 06 октября 2010

Действительно, если бы можно было полагаться на то, что по умолчанию каталоги .svn / .hg не обслуживаются, это не будет проблемой.На самом деле, кто-то (новичок / новичок / опытный в плохой день) вносит небольшое изменение, которое разрушает эти настройки, и, поскольку «все идет не так, как надо», не замечает, что защита исчезла.Вуаля, ваш исходный код открыт для всего мира, возможно, даже с сохраненными паролями и секретами.Дело не в том, что что-то пойдет не так с правильными настройками, а в том, что с незначительными, легко приукрашенными изменениями они могут пойти не так, так почему бы не проигнорировать это?проще export определенных веток / тегов в определенных папках, и переключение на более новую ветку / тег, который пережил тестирование, просто меняет корень документа с /path/project/release-123 на /path/project/release-124 (что делает его таким же простым, может дажебыстрее, чтобы переключиться обратно на release-123, может быть необходимость там).Если у вас есть процесс выпуска с большим количеством мелких изменений и исправлений, работа с экспортом действительно может быть трудной, но, на мой взгляд, дополнительная безопасность того стоит.

На серверах разработки все уже отфильтрованона (VPN-) IP-адресах или сертификатах, поэтому там я использую извлечение «последней и самой лучшей» версии соединительных линий с каталогами управления версиями без проблем.

edit:

И В настоящее время Mercurial и Subversion хранят там данные в одной директории .hg / .svn на верхнем уровне.Как обычно делается проверка, когда большинство файлов находятся за пределами корня документа (а корень документа, вероятно, находится в подкаталоге ниже), это отлично .Просто убедитесь, что ваши каталоги контроля версий , а не в доступной папке для веб-сервера внутри корня документа, и вы можете хранить извлечения, а не экспортировать туда без особых проблем.

4 голосов
/ 06 октября 2010

Я фанат того, чтобы мой DocumentRoot был клоном моего ртутного хранилища. В самом деле, вы даже можете настроить это репо на автоматическое обновление на push, используя такой хук:

[hooks]
changegroup = hg update

Это означает, что вы можете hg push войти в репозиторий на своем сервере, и вы получите обновление сайта автоматически. Довольно много людей делают это.

1 голос
/ 06 октября 2010

Кроме риска случайного предоставления файла diff клиенту, я не вижу никаких других проблем безопасности.

Учитывая, что вы ограничиваете доступ к файлам .svn, .hg или другим.Тот факт, что у вас есть эти папки, приводит к тому, что вам приходится постоянно применять к ним ограничения, что рискованно.Человеческие ошибки случаются.

С уважением, Алинь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...