7

В одном из моих веб-приложений я случайно оставил каталог .git доступным для чтения веб-сервером в течение последних нескольких недель. Список индексов был отключен. Посещение URL-адреса website.com/.git может привести к ошибке 404, которая неотличима от любой другой ошибки 404, но, например, просмотр веб-сайта website.com/.git/config приведет к загрузке файла.

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

2 ответа2

4

Да, можно загрузить все содержимое репозитория (включая историю) - простой git clone сделает это. Однако это предполагает, что кто-то знал о существовании этого каталога .git ... более вероятно, что никто даже не заметил этого. Вы всегда можете проверить логи вашего веб-сервера, чтобы быть уверенным.

2

Простой git clone в корне документа не совсем точен. Клонирование открытого GIT-репозитория невозможно на « тупых » серверах, таких как случайное использование .git через HTTP, если на сервере не выполняется git update-server-info . В то время как некоторые из метаданных доступны, получение содержимого каталога .git/objects (ака сочные вещи) не всегда возможно. Можно восстановить объекты , которые не упакованы . Не должно быть в случае с рабочей копией / хранилищем на производственном сервере.

Это другая история для машины для разработки с зафиксированными изменениями, которые не передаются на удаленный компьютер. В этом случае сборщик мусора обычно не вызывается, если только вы не вызываете git gc , следовательно, файлы еще не являются частью packfiles. Вы можете восстановить через HTTP файлы, которые были зафиксированы с момента последнего нажатия.

update-server-info в основном создает карту ссылок (.git/info/refs) и пакетов (.git/objects/info/packs). Несмотря на то, что .git/pack-refs может использоваться для замены первого, получение упаковочных файлов невозможно без включения индекса каталога или фактического подбора SHA-1 (что является плохой идеей с самого начала).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .