J'ai commencé à utiliser git pour le déploiement de sites Web à des fins de test. Comment empêcher Apache de servir le contenu du répertoire .git?
j'ai essayé
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
sans succès.
Je sais que je peux créer un fichier .htaccess dans chaque répertoire .git et refuser l'accès, mais je voulais quelque chose que je pourrais mettre dans le fichier de configuration principal qui le rend global sur tous les sites Web.
apache-2.2
git
Shoan
la source
la source
Réponses:
Cela ne fonctionne pas parce que vous avez 'svn' et non pas 'git' dans la règle. Tout ce que vous avez à faire est de remplacer le "svn" par "git".
la source
<DirectoryMatch /\.git/>
Cela a le même effet que beaucoup d'autres réponses mais est beaucoup plus simple:
Cela peut aller dans
.htaccess
ou dans votre fichier de configuration du serveur. Il masque tout fichier ou répertoire dont le nom commence par.git
(par exemple un.git
répertoire ou un.gitignore
fichier) en renvoyant un 404. Ainsi, non seulement le contenu de votre dépôt Git est masqué, mais son existence même est également masquée.la source
.git
dossiers seront toujours visibles, mais vous obtiendrez le 404 lorsque vous tenterez d'y accéder.Si vous n'utilisez pas les fichiers .htaccess mais souhaitez plutôt utiliser /etc/apache2/httpd.conf (ou le fichier de configuration principal de votre serveur) pour masquer les répertoires .git et les fichiers .gitignore, vous pouvez utiliser les éléments suivants. J'ai trouvé la réponse ci-dessus pour le paramètre maître conf ne masquait pas le fichier gitignore.
la source
www.example.com/.git/config
fichier dans Apache httpd 2.4.27.Si vous êtes sur un service d'hébergement partagé et n'avez pas accès à apache.conf , vous pouvez toujours le faire dans votre fichier .htaccess, comme ceci:
la source
Cela fonctionne dans
.htaccess
, aucunhttp.conf
accès requis. Incluez ceci en tant que première des règles de réécriture. PréfinissezRewrite On
si nécessaire.Du point de vue de la sécurité, je préfère un faux 404 à un 403, plus informatif pour l’attaquant. Commentez l'un des deux, pour vous assurer que l'autre fonctionne pour vous aussi.
Btw, les bons changements sont, votre test lithmus pour les deux sont:
la source
RewriteEngine On
avant votre RewriteRule. Quoi qu'il en soit, il est tautologique et redondant car le plus simple RedirectMatch suffit à lui seul. Même si cela pourrait être simplifié. Fondamentalement, je recommande ma réponse à la place. :)Pour protéger le répertoire .git ainsi que d'autres fichiers tels que .gitignore et .gitmodules à l'aide de .htaccess, utilisez:
la source
J'ajoute toujours la ligne suivante dans le template vhost
Juste pour être sûr que personne ne peut accéder aux données spécifiques à VCS. Fonctionne parfaitement.
la source
En supposant que votre serveur Web utilise un utilisateur différent de celui que vous utilisez pour accéder au référentiel .git, vous pouvez désactiver le bit d'exécution pour les autres utilisateurs du répertoire .git.
Cela devrait fonctionner avec d'autres serveurs Web et ne repose pas sur des fichiers .htaccess gourmands en performances.
la source
Pour ceux qui cherchent simplement à refuser tous les fichiers et répertoires "cachés" d'une distribution Linux (généralement tous les fichiers commençant par un "."), Voici ce qui fonctionne sur Apache 2.4 lorsqu'il est placé dans un contexte de configuration de serveur:
Et voici l'ancien style Apache 2.2 (même regex, juste des directives d'authentification différentes):
Ensuite, vous n'avez pas à vous soucier de
.git
ou.svn
spécifiquement. Cela correspondrait aussi à des choses comme.htaccess
et.htpasswd
intrinsèquement.Personnellement, j'aime bien émettre des requêtes 403 au lieu de 404, mais vous pouvez facilement utiliser un RewriteRule au lieu d'un refus d'authentification, comme ceci:
la source
Vous voulez probablement aussi refuser de servir
.gitignore
.Les fichiers commençant par un point sont cachés dans linux.
Par conséquent, juste 404 tout ce qui commence par un point:
RedirectMatch 404 /\.
la source
C'est un peu tard mais ma réponse est légèrement différente et j'ai donc pensé l'ajouter. Cela doit aller dans le fichier httpd.conf. Le
<Files "*">
niché à l'intérieur de la<Directory>
balise bloquera tous les fichiers du répertoire.la source