Vorsicht bei Git als Homepage-Versionsmanagement

Die Versionsverwaltung Git findet inzwischen immer mehr Anhänger. Kein Wunder, vereinfachen doch die dezentrale Struktur und simple technische Voraussetzungen die Nutzung eines Versionsmanagement enorm. Auch für die Verwaltung von Webseiten begegnet mir Git in letzter Zeit häufiger, allerdings haben die Webmaster nicht selten zu kurz gedacht: Git speichert seine Daten als versteckten Ordner. Verwendet man die Datenbasis des Repository auf seinem Webserver ist dieser entsprechend auch dabei und ohne weitere Vorkehrungen auch im Netz erreichbar. Bei mehreren getesteten Seiten ist es so möglich durch Öffnen des Ordners „.git“ an Daten zu kommen, welche möglicherweise nicht für die Öffentlichkeit bestimmt sind. Unter /.git/logs/HEAD findet sich z.B. eine Auflistung aller Änderungen – samt Autoren. Interessant dürfte auch der Ordner „objects“ sein – hier liegen die Änderungen selbst – natürlich auch eventuelle Config-Dateien mit Passwörtern. Zwar nutzt Git ein eigenes Format und gibt keinen Reintext aus, entsprechende Programme um die Dateien zu lesen sind aber natürlich verfügbar.

Eine einfache Abhilfe bietet auf den ersten Blick das Ausblenden der .git-Ordners bzw. aller „Dot-Files“. Dies schützt jedoch nicht vor direktem Aufruf der Unterordner!

Bei mir verwende ich nun folgendes Sniplet aus dem Joyent-Forum:

<directorymatch „^/.*/.(git|svn)/“>
Order deny,allow
Deny from all
</directorymatch>

Dieses muss in die Apache-Config geschrieben werden, in einer .htaccess funktioniert es nicht. Hat man keinen Zugang zur Konfiguration könnte man alternativ direkt im .git-Verzeichnis eine passende .htaccess anlegen, ob diese Methode Git durcheinander bringt habe ich allerdings nicht getestet.

Update:

In oben genannten Forum findet sich noch folgende Möglichkeit basierend auf mod_rewrite. Damit funktionierts auch per .htaccess.

RewriteEngine On
RewriteRule ^.git - [F,L]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert