He comenzado a usar git para la implementación de sitios web para pruebas. ¿Cómo evito que apache sirva el contenido del directorio .git?
Lo intenté
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
Sin éxito.
Sé que puedo crear un archivo .htaccess en cada directorio .git y denegar el acceso, pero quería algo que pudiera poner en el archivo de configuración principal que lo haga global en todos los sitios web.
apache-2.2
git
Shoan
fuente
fuente
Respuestas:
No funciona porque tienes 'svn' y no 'git' en la regla. Todo lo que tienes que hacer es reemplazar el 'svn' con 'git'.
fuente
<DirectoryMatch /\.git/>
Esto tiene el mismo efecto que muchas de las otras respuestas, pero es mucho más simple:
Esto puede entrar en
.htaccess
su archivo de configuración del servidor. Oculta cualquier archivo o directorio cuyo nombre comience.git
(por ejemplo, un.git
directorio o.gitignore
archivo) al devolver un 404. Por lo tanto, no solo se oculta el contenido de su repositorio Git, sino que también se oculta su existencia.fuente
.git
carpetas seguirán siendo visibles, pero obtendrá el 404 cuando intente acceder a ellas.Si no usa archivos .htaccess pero en su lugar quiere usar /etc/apache2/httpd.conf (o el archivo de configuración maestro de su servidor) para ocultar los directorios .git y los archivos .gitignore, puede usar lo siguiente. Encontré que la respuesta anterior para la configuración de configuración maestra no ocultaba el archivo gitignore.
fuente
www.example.com/.git/config
archivo en Apache httpd 2.4.27.Si está en un servicio de alojamiento compartido y no tiene acceso a apache.conf , aún puede hacerlo en su archivo .htaccess, de esta manera:
fuente
Esto funciona en
.htaccess
, no sehttp.conf
requiere acceso. Incluya esto como la primera de las reglas de reescritura. AnteponerRewrite On
si es necesario.Desde un punto de vista de seguridad, prefiero un 404 falso sobre un 403, más informativo para el atacante. Comente uno de los dos, para asegurarse de que el otro también funcione para usted.
Por cierto, buenos cambios son, su prueba de litmo para los dos son:
fuente
RewriteEngine On
antes de su RewriteRule. Pero de todos modos es tautológico y redundante porque el RedirectMatch más simple es suficiente por sí solo. Aunque incluso eso podría simplificarse. Básicamente estoy recomendando mi respuesta en su lugar. :)Para proteger tanto el directorio .git como otros archivos como .gitignore y .gitmodules usando .htaccess, use:
fuente
Siempre agrego la siguiente línea en la plantilla vhost
Solo para asegurarse de que nadie pueda acceder a datos específicos de VCS. Funciona perfecto
fuente
Suponiendo que su servidor web esté usando un usuario diferente al que usa para acceder al repositorio .git, puede deshabilitar el bit de ejecución para otros en el directorio .git.
Esto debería funcionar con otros servidores web y no depende de archivos .htaccess que consuman rendimiento.
fuente
Para aquellos que buscan simplemente negar todos los archivos y directorios "ocultos" en una distribución de Linux (generalmente todos los archivos que comienzan con un "."), Esto es lo que funciona en Apache 2.4 cuando se coloca en el contexto de configuración del servidor:
Y aquí está el estilo antiguo de Apache 2.2 (misma expresión regular, solo diferentes directivas de autenticación):
Entonces no tienes que preocuparte
.git
ni.svn
específicamente. Eso también coincidiría con cosas como.htaccess
e.htpasswd
inherentemente.Personalmente, me gusta emitir 403 para tales solicitudes en lugar de 404, pero podría usar fácilmente una RewriteRule en lugar de la denegación de autenticación, de esta manera:
fuente
Probablemente quieras negar que sirvas
.gitignore
también.Los archivos que comienzan con un punto están ocultos en Linux.
Por lo tanto, solo 404 cualquier cosa que comience con un punto:
RedirectMatch 404 /\.
fuente
Esto es un poco tarde, pero mi respuesta es un poco diferente, así que pensé en agregarlo. Esto debe ir en el archivo httpd.conf. El
<Files "*">
anidado dentro de la<Directory>
etiqueta bloqueará todos los archivos en el directorio.fuente