Vraag Hoe voorkom ik dat apache de .git-directory gebruikt?


Ik ben begonnen met het gebruik van git voor het inzetten van websites voor testen. Hoe voorkom ik dat apache de inhoud van de .git-directory weergeeft?

ik probeerde

<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>

zonder succes.

Ik weet dat ik een .htaccess-bestand in elke .git-map kan maken en toegang kan weigeren, maar ik wilde iets dat ik in het hoofdconfiguratiebestand kon plaatsen dat dit globaal op alle websites maakt.


63
2018-03-31 12:11


oorsprong


Zodra je hebt verhinderd dat apache de directory kan dienen, moet je misschien ook de .git-map verbergen met "IndexIgnore .git" als je Indexes hebt ingeschakeld in je directory. - Ryan


antwoorden:


Het werkt niet omdat je 'svn' en niet 'git' in de regel hebt. Het enige wat je hoeft te doen is de 'svn' vervangen door 'git'.

<Directorymatch "^/.*/\.git/">
Order deny,allow
Deny from all
</Directorymatch>

46
2018-03-31 12:45



Wanneer ik een .htaccess maak met alleen uw code, krijg ik de foutmelding: "<DirectoryMatch is hier niet toegestaan" - Shoan
Het moet in de Apache conf. Zijn. Zien: httpd.apache.org/docs/1.3/mod/core.html#directorymatch - sinping
De eenvoudigste regex is <DirectoryMatch /\.git/> - Bachsau
Controleer dit voor de perfecte oplossing magento.stackexchange.com/questions/202840/... - Pratik Kamani
1e, dankzij singping / OP. Merk op dat in Apache 2.4 de "Order, weigeren" en de volgende regel zijn vervangen door "Alle geweigerd vereisen". Ook heeft veel installaties het bestand met de naam "Apache conf" hierboven "httpd.conf" genoemd --- het gebruik van singping was slechts een losse verklaring, dus zoek niet naar die letterlijke naam (zou waarschijnlijk vanzelf moeten gaan, maar je weet maar nooit hoe mensen het zouden kunnen lezen). - Kevin_Kinsey


Dit heeft hetzelfde effect als veel van de andere antwoorden, maar is veel eenvoudiger:

RedirectMatch 404 /\.git

Dit kan ingaan .htaccess of uw serverconfiguratiebestand. Het verbergt elk bestand of elke directory waarvan de naam begint .git (bijvoorbeeld een .git map of .gitignore bestand) door een 404 terug te sturen. Dus niet alleen de inhoud van je Git-repo is verborgen, ook het bestaan ​​ervan is verborgen.


122
2017-08-01 10:19



Ik hou echt van deze oplossing. Het is eenvoudig en elegant. - Shoan
Dit in de root-htdocs-directory plaatsen doet ook een globale klus. - jor
Houd ook van deze optie. Het lijkt mij veiliger om een ​​404 terug te sturen voor verzoeken als /.git of /.gitignore, zodat het feit dat git zelfs wordt gebruikt, niet van buitenaf kan worden bepaald. - Ezra Free
Houd er rekening mee dat als u directoryvermeldingen hebt ingeschakeld, de .git mappen zullen nog steeds zichtbaar zijn, maar je krijgt de 404 wanneer je ze probeert te openen. - Andy Madge
@BennettMcElwee yep was het ermee eens, er is bijna nooit een goede reden om directoryvermelding wereldwijd in te schakelen op een productieserver. Dacht alleen dat het een vermelding verdiende voor het geval het iemand betrapt. - Andy Madge


Als u geen .htaccess-bestanden gebruikt maar in plaats daarvan /etc/apache2/httpd.conf (of wat het belangrijkste conf-bestand van uw server dan ook) wilt gebruiken om zowel .git-mappen als .gitignore-bestanden te verbergen, kunt u het volgende gebruiken. Ik vond het antwoord hierboven omdat de master conf-instelling het gitignore-bestand niet verbergde.

# do not allow .git version control files to be issued
<Directorymatch "^/.*/\.git+/">
  Order deny,allow
  Deny from all
</Directorymatch>
<Files ~ "^\.git">
    Order allow,deny
    Deny from all 
</Files>

13
2017-08-28 21:49



Blokkeert het niet www.example.com/.git/config bestand in Apache httpd 2.4.27. - ilhan


Als je een gedeelde hostingservice hebt en geen toegang hebt tot apache.conf, je kunt het nog steeds doen in je .htaccess-bestand, zoals dit:

RewriteEngine On
RewriteRule "^(.*/)?\.git/" - [F,L]

10
2018-03-23 19:21



bedankt dat dit voor mij werkte in een shared hosting-situatie waar het topantwoord dat niet deed - Plato


### never deliver .git folders, .gitIgnore
RewriteRule ^(.*/)?\.git+ - [R=404,L]

# 2nd line of defense (if no mod_rewrite)
RedirectMatch 404 ^(.*/)?\.git+

Dit werkt in .htaccess, Nee http.conf toegang vereist. Voeg dit toe als de eerste van de herschrijfregels. Vooraan toevoegen Rewrite On indien nodig.

Vanuit een beveiligingshoek geef ik de voorkeur aan een valse 404 boven een 403, meer informatief voor de aanvaller. Reageer een van de twee uit om ervoor te zorgen dat de andere ook voor jou werkt.

Trouwens, er zijn goede veranderingen, je lithmus-test voor de twee zijn:

http://localhost/.gitignore
http://localhost/.git/HEAD

6
2018-05-26 10:08



Waarom hebben beide regels? De eenvoudigere RedirectMatch volstaat op zichzelf. (Ook lijken de regexes niet helemaal goed - waarom de plus op het einde?) - Bennett McElwee
Persoonlijke paranoia / dubbele beveiliging. Als RewriteEngine wordt uitgeschakeld (centrale configuratie verandert, slechte teamcommunicatie, ongelukkige server "update", ... noem maar op :-) De + is verouderd of zou een $, goed punt moeten zijn! (geen tijd om te testen, sorry.) - Frank Nocke
Als je bang bent dat RewriteEngine misschien uit is, gewoon zetten RewriteEngine On voor uw RewriteRule. Maar hoe dan ook, het is tautologisch en overbodig omdat de eenvoudigere RedirectMatch op zichzelf volstaat. Hoewel zelfs dat kan worden vereenvoudigd. In principe adviseer ik mijn antwoord in plaats daarvan. :) - Bennett McElwee
+1 voor de lakmoesproef.


Gebruik zowel de .git-map als andere bestanden zoals .gitignore en .gitmodules om .htaccess te gebruiken:

RewriteEngine On
RewriteRule ^(.*/)?\.git+ - [F,L]
ErrorDocument 403 "Access Forbidden"

5
2017-10-28 22:04



Werkt voor mij, maar de trailing ErrorDocument heeft geen impact. Vanuit het oogpunt van de veiligheid, zou ik een valse 404 willen voorstellen boven een informatieve 403 voor de aanvaller ... - Frank Nocke
Dit is een slecht idee, omdat het informatie aan hackers onthult. Een 403 betekent dat het er is, een 404 betekent dat het dat niet is. Elk feit in de instellingen van een server is nuttig voor een hacker. Ik zou overwegen dit te herzien. - GerardJP


Ik voeg altijd de volgende regel toe aan vhost-sjabloon

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

Om er zeker van te zijn dat niemand toegang heeft tot VCS-specifieke gegevens. Werkt perfect.


3
2018-03-18 15:48