Si eres de los que usan los sistemas de control de versiones deberías tener en cuenta que en entornos de producción es mejor esconder esa parte del código, ya que es muy fácil conseguir el código fuent. Nosotros nos centraremos en GIT pero realmente es posible hacerlo en los demás sistemas (SVN,BAZAAR,HG,...)
IMPORTANTE: Todos los comandos y configuraciones se realizan en un servidor Debian Jessie y con Nginx 1.6.2.
Los sistemas de control de versiones crean un directorio en el proyecto donde se guarda el código fuente y sus versiones. Si tienes colgado el código en una web es fácil acceder a la carpeta que tiene el control de versiones creada.
Método para descargar el código
Una de las formas de acceder al código a través de esta carpeta podría ser la siguiente:
1. Tienes configurada la web con este dominio tuweb.com y para acceder a la carpeta de git usariamos esta ruta tuweb.com/.git .
2. Para descargar el código usaremos un comando wget. Esto nos descargará solo el directorio .git pero realmente solo cone ste directorio podemos recuperar el código.
wget --mirror -I .git tuweb.com/.git/
3. Para recuperar el código tendremos que mirar los últimos commits, usaremos el siguiente comando.
git status | head -n 10
4. Por último ejecutaremos un git checkout para recuperar el código.
git checkout -- .
Hay otros métodos para poder descargar el código, incluso hay una herramienta hecha para poder hacerlo https://github.com/internetwache/GitTools
Proteger nuestros directorios de los sistemas de control de versiones
Configurando nuestros servidores webs podemos evitar que se descarguen el código.
Nginx
location ~ /.git {
deny all;
}
Apache
<DirectoryMatch ".git*">
Require all denied
</DirectoryMatch>
Lighthttp
$HTTP["url"] =~ "^/\.git/" {
url.access-deny = ("")
}