Подтвердить что ты не робот

Развертывание Mercurial Repository для производства - проблемы безопасности и советы

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

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

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

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

Альтернативы приветствуются.

Спасибо!

4b9b3361

Ответ 1

В самом деле, если бы по умолчанию нельзя было использовать каталоги .svn/.hg, это не проблема. Как бы то ни было, кто-то (newbee/new develop/experience on at bad day) делает небольшое изменение, которое разрушает эти настройки, и поскольку "ничего не выходит из строя" не замечает, что защита ушла. Voilà, ваш исходный код открыт для всего мира, возможно, даже с сохраненными паролями и секретами. Это не то, что что-то пойдет не так с правильными настройками, это с незначительным, легко замаскированным над изменением, они могут пойти не так, так почему бы не безопасно играть?

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

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

изменить:

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

Ответ 2

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

[hooks]
changegroup = hg update

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

Ответ 3

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

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

С уважением, Alin