Ich habe angefangen, Git für die Bereitstellung von Websites zum Testen zu verwenden. Wie verhindere ich, dass Apache den Inhalt des Git-Verzeichnisses bereitstellt?
Ich habe es versucht
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
ohne erfolg.
Ich weiß, dass ich in jedem .git-Verzeichnis eine .htaccess-Datei erstellen und den Zugriff verweigern kann, aber ich wollte etwas, das ich in die Hauptkonfigurationsdatei einfügen kann, die diese Datei für alle Websites global macht.
apache-2.2
git
Shoan
quelle
quelle
Antworten:
Es funktioniert nicht, weil Sie in der Regel "svn" und nicht "git" haben. Alles was Sie tun müssen, ist das 'svn' durch 'git' zu ersetzen.
quelle
<DirectoryMatch /\.git/>
Dies hat den gleichen Effekt wie viele andere Antworten, ist jedoch viel einfacher:
Dies kann in
.htaccess
oder Ihre Server-Konfigurationsdatei gehen. Es verbirgt alle Dateien oder Verzeichnisse, deren Name mit " 404" beginnt.git
(z. B. ein.git
Verzeichnis oder eine.gitignore
Datei). Somit wird nicht nur der Inhalt Ihres Git-Repos ausgeblendet, sondern auch dessen Existenz.quelle
.git
Ordner weiterhin sichtbar sind, Sie jedoch die 404 erhalten, wenn Sie versuchen, auf sie zuzugreifen.Wenn Sie keine .htaccess-Dateien verwenden, sondern stattdessen die Datei /etc/apache2/httpd.conf (oder die Master-Conf-Datei Ihres Servers) verwenden möchten, um sowohl .git-Verzeichnisse als auch .gitignore-Dateien auszublenden, können Sie Folgendes verwenden. Ich fand die Antwort oben für Master Conf-Einstellung die Gitignore-Datei nicht versteckt.
quelle
www.example.com/.git/config
Datei in Apache httpd 2.4.27 nicht.Wenn Sie einen Shared Hosting Service nutzen und keinen Zugriff auf apache.conf haben , können Sie dies dennoch in Ihrer .htaccess-Datei tun:
quelle
Dies funktioniert in
.htaccess
, keinhttp.conf
Zugriff erforderlich. Schließen Sie dies als erste der Umschreiberegeln ein. BeiRewrite On
Bedarf voranstellen .Aus Sicherheitsgründen bevorzuge ich einen falschen 404-Wert gegenüber einem 403-Wert, der für den Angreifer informativer ist. Kommentieren Sie eines der beiden aus, um sicherzustellen, dass das andere auch für Sie funktioniert.
Übrigens, gute Änderungen sind, dein Lithmus-Test für die beiden ist:
quelle
RewriteEngine On
Sie es einfach vor Ihre RewriteRule. Trotzdem ist es tautologisch und redundant, da der einfachere RedirectMatch für sich alleine ausreicht. Auch das könnte vereinfacht werden. Grundsätzlich empfehle ich stattdessen meine Antwort . :)Um sowohl das Git-Verzeichnis als auch andere Dateien wie Gitignore und Gitmodules mit Hilfe von HTAccess zu schützen, verwenden Sie:
quelle
Ich füge immer die folgende Zeile in die vhost-Vorlage ein
Nur um sicherzugehen, dass niemand auf VCS-spezifische Daten zugreifen kann. Funktioniert perfekt.
quelle
Angenommen, Ihr Webserver verwendet einen anderen Benutzer als den, mit dem Sie auf das .git-Repository zugreifen, können Sie das Ausführungsbit für andere Benutzer im .git-Verzeichnis deaktivieren.
Dies sollte mit anderen Webservern funktionieren und ist nicht auf leistungsintensive .htaccess-Dateien angewiesen.
quelle
Für diejenigen, die einfach alle "versteckten" Dateien und Verzeichnisse auf einer Linux-Distribution ablehnen möchten (im Allgemeinen alle Dateien, die mit einem "." Beginnen), gilt Folgendes für Apache 2.4, wenn sie im Serverkonf-Kontext platziert werden:
Und hier ist der ältere Apache 2.2-Stil (gleicher regulärer Ausdruck, nur verschiedene Auth-Direktiven):
Dann haben Sie keine Sorgen machen
.git
oder.svn
speziell. Das würde auch zu Dingen wie.htaccess
und von.htpasswd
Natur aus passen .Persönlich mag ich es, 403s für solche Anfragen anstelle von 404s auszugeben, aber Sie könnten leicht eine RewriteRule anstelle von Auth Denial verwenden, wie folgt:
quelle
Sie möchten wahrscheinlich auch das Servieren verweigern
.gitignore
.Dateien, die mit einem Punkt beginnen, werden unter Linux ausgeblendet.
Daher nur alles, was mit einem Punkt beginnt:
RedirectMatch 404 /\.
quelle
Das ist etwas spät, aber meine Antwort ist etwas anders, also dachte ich, ich würde es hinzufügen. Dies muss in der httpd.conf-Datei gehen. Das
<Files "*">
verschachtelte Element im<Directory>
Tag blockiert alle Dateien im Verzeichnis.quelle