Безопасность самообновляющегося веб-приложения - PullRequest
1 голос
/ 13 февраля 2011

Каковы проблемы безопасности следующего сценария? (это одна из тех сумасшедших идей, которые кто-то попробует, и, может быть, это хорошая идея, а может, и ужасная идея ...)

У вас есть приложение Rails на example.com, а действие на https://example.com/admin/update_app

Это действие имеет следующие требования:

  1. Требуется https (и перенаправляет, если не на https)
  2. Требуется доступ администратора
  3. Действие отображает страницу с формой «Пароль хранилища: []»
  4. Это поле отфильтровывается из журналов сервера так же, как отфильтровывается аутентификация на сайте через механизм фильтрации журналов в Rails (т.е. этот метод )

Это действие выполняет следующие действия:

  1. Вы вводите свой пароль к хранилищу кода в поле и нажимаете «Отправить»
  2. Действие запускает сценарий оболочки, который извлекает последние обновления из стабильной ветви вашего репозитория кода и применяет их к сайту (если только аутентификация репозитория не завершится неудачно, в этом случае он останавливает все дальнейшие шаги)
  3. веб-сервер перезапущен
  4. Администратору отправлено электронное письмо со словами: «Обновление приложения завершено»

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Не отправляйте пароль. Приложение может быть скомпрометировано и запущено, либо фильтрация может завершиться ошибкой. Вместо этого предоставьте веб-приложению доступ только для чтения к хранилищу через отдельную учетную запись или открытый доступ.

Не перезагружать сервер, если нет изменений. Тогда действие является безопасным даже без контроля доступа: если разработчик не разрешил обновление путем обновления стабильной ветки, ничего не произойдет. Если стабильная ветвь не так стабильна, создайте для нее отдельную производственную ветвь.

Остановите веб-сервер перед обновлением. Приложение может быть небезопасным или небезопасным для использования в качестве набора файлов из разных версий.

Убедитесь, что веб-сервер не обслуживает файлы метаданных, оставленные VCS.

1 голос
/ 13 февраля 2011

Что ж, все это напоминает мне заново изобретенное развертывание capistrano на сервере через репозиторий git.

Единственная проблема, которая: 1) что будет, если во время слияния возникнут конфликты (пункт 2)? 2) что если веб-сервер не будет корректно перезагружен (пункт 3)? 3) Что если ветка в вашем хранилище не так стабильна (пункт 2)?

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