Zacząłem używać git do wdrażania stron internetowych do testowania. Jak zapobiec udostępnianiu zawartości katalogu .git przez apache?
próbowałem
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
bez powodzenia.
Wiem, że mogę utworzyć plik .htaccess w każdym katalogu .git i odmówić dostępu, ale chciałem czegoś, co mógłbym umieścić w głównym pliku konfiguracyjnym, który uczyni to globalnym we wszystkich witrynach.
apache-2.2
git
Shoan
źródło
źródło
Odpowiedzi:
To nie działa, ponieważ masz w regule „svn”, a nie „git”. Wszystko, co musisz zrobić, to zamienić „svn” na „git”.
źródło
<DirectoryMatch /\.git/>
Ma to taki sam efekt, jak wiele innych odpowiedzi, ale jest o wiele prostsze:
Może to przejść do
.htaccess
pliku konfiguracyjnego serwera. Ukrywa każdy plik lub katalog, którego nazwa zaczyna się od.git
(np..git
Katalog lub.gitignore
plik), zwracając kod 404. Tak więc nie tylko ukryta jest zawartość repozytorium Git, ale także jego istnienie.źródło
.git
katalogi , foldery będą nadal widoczne, ale dostaniesz 404, gdy spróbujesz uzyskać do nich dostęp.Jeśli nie używasz plików .htaccess, ale zamiast tego chcesz użyć /etc/apache2/httpd.conf (lub cokolwiek innego głównego pliku konfiguracyjnego serwera), aby ukryć zarówno katalogi .git, jak i pliki .gitignore, możesz skorzystać z następujących opcji. Znalazłem powyższą odpowiedź dla ustawienia master conf nie ukrywało pliku gitignore.
źródło
www.example.com/.git/config
pliku w Apache httpd 2.4.27.Jeśli korzystasz z usługi hostingu współdzielonego i nie masz dostępu do apache.conf , nadal możesz to zrobić w pliku .htaccess:
źródło
To działa
.htaccess
, niehttp.conf
wymaga dostępu. Uwzględnij to jako pierwszą z reguł przepisywania. Przygotuj wRewrite On
razie potrzeby.Z punktu widzenia bezpieczeństwa wolę fałszywy 404 niż 403, bardziej informacyjny dla atakującego. Skomentuj jeden z dwóch, aby upewnić się, że drugi również działa dla ciebie.
Btw, dobre zmiany, twój test lithmus dla tych dwóch to:
źródło
RewriteEngine On
przed RewriteRule. Ale w każdym razie jest tautologiczna i zbędna, ponieważ sama prostota RedirectMatch wystarczy. Chociaż nawet to można uprościć. Zasadniczo polecam zamiast tego moją odpowiedź . :)Aby chronić zarówno katalog .git, jak i inne pliki, takie jak .gitignore i .gitmodules za pomocą .htaccess, użyj:
źródło
Zawsze dodam następujący wiersz do szablonu vhost
Tylko dla pewności, że nikt nie ma dostępu do danych specyficznych dla VCS. Działa idealnie.
źródło
Zakładając, że twój serwer używa innego użytkownika niż ten, którego używasz do uzyskania dostępu do repozytorium .git, możesz wyłączyć bit wykonywania dla innych w katalogu .git.
Powinno to działać z innymi serwerami WWW i nie opierać się na energochłonnych plikach .htaccess.
źródło
Dla tych, którzy chcą po prostu odrzucić wszystkie „ukryte” pliki i katalogi w dystrybucji Linuksa (ogólnie wszystkie pliki rozpoczynające się od „.”), Oto, co działa na Apache 2.4, gdy jest umieszczony w kontekście konf:
A oto starszy styl Apache 2.2 (ten sam regex, tylko inne dyrektywy autoryzacyjne):
Wtedy nie musisz się martwić
.git
ani.svn
konkretnie. To również pasowałoby do rzeczy podobnych.htaccess
i.htpasswd
nieodłącznych.Osobiście lubię wydawać 403 dla takich żądań zamiast 404, ale możesz łatwo użyć RewriteRule zamiast odmowy autoryzacji, na przykład:
źródło
Prawdopodobnie chcesz również odmówić serwowania
.gitignore
.Pliki zaczynające się od kropki są ukryte w systemie Linux.
Dlatego tylko 404 wszystkiego, co zaczyna się od kropki:
RedirectMatch 404 /\.
źródło
Jest trochę późno, ale moja odpowiedź jest nieco inna, więc pomyślałem, że to dodam. Musi to znaleźć się w pliku httpd.conf.
<Files "*">
Zagnieżdżone wewnątrz<Directory>
znacznika blokuje wszystkie pliki w katalogu.źródło