tortoise subversion repositorio funciona desvincular crear como carpeta svn apache deployment capistrano

subversion - svn windows



Denegar el acceso a las carpetas.svn en Apache (12)

Tenemos una aplicación de rieles en subversión que implementamos con Capistrano, pero hemos notado que podemos acceder a los archivos en ''/.svn'', que presenta un problema de seguridad.

Quería saber cuál es la mejor manera de hacer esto. Algunas ideas:

  • Configuración global de Apache para denegar el acceso
  • Agregar archivos .htaccess en la carpeta pública y todas las subcarpetas
  • Tarea de límite que cambia los permisos

Realmente no me gusta la idea de eliminar las carpetas o usar svn export, ya que me gustaría mantener la ''información svn''.


Cree un archivo de derechos de acceso en la instalación de su servidor de subversión.

por ejemplo, si su estructura de carpetas es

/ svn

/svn/rights/svnauth.conf

cree un archivo de configuración e ingrese la ruta de ese archivo en su archivo de configuración de subversión de apache que normalmente encontraría en /etc/httpd/conf.d/subversion.conf

En su archivo svnauth.conf defina los derechos como:

derechos de acceso para Foo.com

[foo.com:/trunk/source]

dev1 = rw

dev2 = rw .....

De esta forma, puede controlar los derechos de acceso desde un solo archivo y en un nivel mucho más detallado.

Para más información, lea detenidamente el libro rojo svn.


Creo que Riccardo Galli lo hizo bien. Incluso apache ya tenía la configuración .svn como prohibida para mí, pero .svn / entries estaba ciertamente disponible ... exponiendo mi servidor svn, número de puerto, nombres de usuario, etc.

Realmente me imagino, ¿por qué no restringir .git como una medida preventiva (digamos que no usas git todavía pero puede que algún día no estés pensando en restricciones de directorio).

Y luego pensé, ¿por qué no restringir todo lo que debería ocultarse de todos modos? ¿Alguien puede concebir un problema con esto?

RedirectMatch 404 ///..*(/.*|$)

Agregué el ''. *'' Después del período inicial, única diferencia de Riccardo. Parece 404 .svn, .git, .blah, etc.


En .htaccess en su archivo de configuración del servidor.

(1)

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

Y 2)

RedirectMatch 404 //.git

Coloque este método en el archivo .htaccess .

Oculta cualquier archivo o directorio cuyo nombre comience con .git como .git directory o .gitignore file al devolver un 404.


Esta:

RedirectMatch permanent .*/.(svn|git|hg|bzr|cvs)/.* /

también se puede usar si no desea enviar un error al usuario.

Solo redirige a la página raíz del sitio. Además, esto es una redirección permanente, por lo que los robots no intentarán reindexar esta URL.


La mejor opción es usar la configuración de Apache.

El uso de htaccess o la configuración global depende principalmente de si usted controla su servidor.

Si lo haces, puedes usar algo como

<DirectoryMatch .*/.svn/.*> Deny From All </DirectoryMatch>

Si no lo hace, puede hacer algo similar en archivos .htaccess con FilesMatch


Las preguntas frecuentes de Apache Subversion están sugiriendo esta solución:

# Disallow browsing of Subversion working copy administrative dirs. <DirectoryMatch "^/.*//.svn/"> Order deny,allow Deny from all </DirectoryMatch>

fuente: https://subversion.apache.org/faq.html#website-auto-update


Me parece que Apache conf debería ser:

<Directory ~ "/.svn"> Order allow,deny Deny from all </Directory>


No me gusta la idea de crear cada archivo con un punto. Utilizaría un enfoque más selectivo, ya sea con los cvs que estoy usando en el proyecto (svn en el ejemplo)

RedirectMatch 404 ///.svn(/|$)

o atrapar todos los sistemas cvs

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

- respuesta obsoleta sigue (ver comentarios) -

Todavía no puedo escribir comentarios, así que ... La respuesta de csexton es incorrecta, porque un usuario no puede acceder a la carpeta .svn, ¡pero puede acceder a todos los archivos que contiene! por ejemplo, puede acceder a http://myserver.com/.svn/entries

La regla correcta es

RedirectMatch 404 ///.svn(/.*|$)


No soy muy aficionado a RedirectMatch, así que usé RewriteRule en su lugar:

RewriteRule //..*(/.*|$) - [R=404,L]

El guión significa "no hacer ninguna sustitución". Tampoco pude entender por qué, en los ejemplos anteriores, la expresión regular tenía dos barras diagonales inversas:

///..*(/.*|$)

Así que saqué uno y funciona bien. No puedo entender por qué usarías dos allí. Alguien me quiere iluminar?


Otra forma de proteger los archivos .svn sería usar una redirección en la configuración de Apache:

RedirectMatch 404 ///.svn(/|$)

Entonces, en lugar de prohibir un 403 (y proporcionar pistas sobre los atacantes) obtienes un 404, que es lo que esperaríamos al teclear aleatoriamente las rutas.


Preferiría denegar el acceso a todos los archivos de puntos (por ejemplo: .htaccess, .svn, .xxx, etc.), ya que normalmente no es necesario acceder a la web.

Aquí está la regla para lograr esto (hasta Apache 2.2 incluido):

<LocationMatch "///..*"> Order allow,deny Deny from all </LocationMatch>

(ACTUALIZACIÓN) O puede usar lo siguiente (que funciona en Apache 2.2 y 2.4):

# Deny access to dot-files, as 404 error # (not giving hint about potential existence to the file) RedirectMatch 404 ".*///..*"


Un RedirectMatch responderá con un 404, que es genial.

Sin embargo, si "Opciones + Índices" está habilitado, los usuarios podrán ver el directorio ''.svn'' desde el directorio principal.

Los usuarios no podrán ingresar al directorio; aquí es donde entra el ''404 Not Found''. Sin embargo, podrán ver el directorio y proporcionar pistas sobre los atacantes.