Saltar al contenido

Una guía práctica para el uso de .gitignore

Con los ataques de alto perfil convirtiéndose en una parte regular del ciclo de noticias (ver Yahoo, Target, Sony…), la seguridad es una consideración cada vez más relevante para cualquiera que desarrolle un producto.

Desafortunadamente, la seguridad es a menudo más sobre lo que no pensamos que sobre lo que hacemos, y es importante cubrir tantas bases como sea posible.

Una guía práctica para el uso de .gitignore
Una guía práctica para el uso de .gitignore

Recientemente ha surgido una tendencia a raspar sitios como GitHub para obtener información sensible, como contraseñas, claves de acceso y bases de datos. Este método de robar información se ha convertido en una táctica sorprendentemente efectiva. Tal vez te preguntes por qué la gente sube sus contraseñas a un sitio público, y la respuesta es sorprendentemente simple. No son conscientes de que lo están haciendo. Para averiguar cuán grande es este problema, nos hemos rascado un poco…

¿Qué tan difundidos están los problemas de seguridad de Git?

Tomamos una muestra de datos de la corriente pública de GitHub para tener una idea de la escala de este asunto. De los 78,3 mil compromisos que comprobamos, 62 de ellos coincidían con patrones de archivos sensibles. Aunque esto puede no parecer mucho (un mero 0,07%), cuando se escala, el impacto es bastante grande.

Dados los datos de hoy solamente del Archivo Github, hubo 459.991 eventos de empuje. Si aplicamos ese 0,07% a estos números, equivale aproximadamente a 322. Eso es más de 300 registros de bases de datos, credenciales de servidores y claves privadas SSH convirtiéndose en información pública cada día! Tengan en cuenta también que estamos hablando de compromisos, no de proyectos.

Con muchos desarrolladores presionando el código varias veces al día, la comprensión y el uso adecuado de gitignore es esencial para proteger los secretos de la empresa – la forma más fácil para los delincuentes de entrar es entregarles las llaves. En general, los archivos de configuración que contienen contraseñas, claves e información similar no deberían ser públicos. Por suerte, ¡hay una solución!

Ignorando archivos

El archivo gitignore fue creado con el propósito de evitar que se suban archivos sin necesidad de excluirlos explícitamente. Cualquier archivo añadido al gitignore nunca será incluido en los commits de git. Esta característica no sólo permite que los archivos específicos del sistema no sean tocados, sino que permite asegurar que los archivos sensibles nunca serán subidos. Tomemos el siguiente directorio como ejemplo:

Si quisiéramos excluir el archivo, “ejemplo.txt”, simplemente crearíamos un archivo, “.gitignore”, que contiene esta línea:

ejemplo.txt

Fácil, ¿verdad? Si quisiéramos excluir todos los archivos de texto, simplemente añadiríamos la línea:

*.txt

Cada línea pertenece a un archivo o conjunto de archivos específicos que hay que excluir. Aquí hay un ejemplo de un archivo completo de gitignore (específicamente uno para rubí):

###Rubí####

*.gem

*.rbc

/.config

/cobertura/

/InstalledFiles

/pkg/

/spec/reports/

/spec/examples.txt

/test/tmp/

/test/version_tmp/

/tmp/

.dat*

.repl_history

build/*

.bridgesupport

build-iPhoneOS/

build-iPhoneSimulator/

## Caché de documentación y archivos generados:

/.yardoc/

/_yardoc/

/doc/

/rdoc/

## Normalización del medio ambiente.
/.bundle/

/vendor/bundle

/lib/bundler/man

Hay bastantes otras características útiles del gitignore, como la eliminación de directorios o la lista blanca de archivos – hemos incluido algunos enlaces útiles abajo si está interesado en algunas de las funcionalidades más avanzadas del gitignore.

Empezando

Antes de añadir un archivo gitignore a su proyecto, vale la pena comprobar si ya existe uno. Esto es importante incluso si trabajas en solitario, ya que muchos servicios y bibliotecas vienen precargados con archivos gitignore incluidos. Una vez que hayas comprobado que necesitas uno nuevo, puedes usar gitignore.io, una gran herramienta para encontrar o generar gitignore. Esta herramienta te dará una línea base de gitignore, a la que podrás añadir archivos importantes o eliminar reglas que no estés usando.

Recursos adicionales

Aquí hay algunos recursos adicionales si estás interesado en aprender más: Documentación de gitignore:https://git-scm.com/docs/gitignorePower herramientas de usuario CLI para hacer fácil el gitignoring:https://github.com/joeblau/gitignore.io/wiki/Advanced-Command-Line-ImprovementsA colección de plantillas útiles de gitignore:https://github.com/github/gitignore

Pensamientos finales

Si estás interesado en investigar por ti mismo qué tipo de cosas no se están ignorando, aquí tienes un enlace al código que usamos para investigar por ti mismo, junto con un léeme que muestra cómo ampliarlo para tu propia comparación de patrones. ¡Feliz cacería!