LATEST ARTICLES

noviembre 19th 2017

Manejo de ramas de desarrollo con git

Número de lecturas: 102
{lang: 'es-419'}

Git es un sistema de control de revisiones distribuido amparado por la GPLv2 que enfatiza sobre todo la velocidad. Fue diseñado y desarrollado inicialmente por Linus Torvalds, creador de Linux como proyecto para mantener repositorios del kernel de Linux.

Cada directorio de trabajo git es un repositorio completamente funcional y con total capacidad independientemente de si existe acceso a la red y de un servidor centralizado, lo cual lo convierte en una poderosa herramienta tanto para el desarrollo de grupos de trabajo como para el desarrollo individual.

Git dispone de muchas características pero hoy voy a hablaros del manejo de ramas de desarrollo con git. Si estáis familiarizados con Github sabréis que la base de dicha red social de desarrollo es el “fork“ de ramas de desarrollo y su posterior “merge“. Git es treméndamente eficiente en ese aspecto.

Git Branching

El manejo de ramas o branching es la parte más atractiva y divertida de trabajar con Git. Cuando inicializamos o clonamos un repositorio, siempre obtenemos una rama principal por defecto llamada master a no ser que especifiquemos lo contrario.

Cambiando de rama

Supongamos que estamos trabajando en un proyecto y queremos añadir nueva funcionalidad al mismo. La forma adecuada de hacerlo con Git es crear una nueva rama con el nombre de la nueva funcionalidad donde añadiremos nuestros cambios y después cambiaremos a ella (git branch switching).

$ git branch nuevafuncionalidad
$ git checkout nuevafuncionalidad

Existe un atajo para crear una rama que aún no existe usando directamente el comando checkout que consiste en pasar el parámetro -b en la llamada.

$ git checkout -b nuevafuncionalidad

Una vez creada nuestra nueva rama de desarrollo, podemos comprobar en que rama nos encontramos utilizando el comando git branch

$ git branch
master
* nuevafuncionalidad

En el ejemplo anterior podemos ver como nos encontramos en la rama nuevafuncionalidad. Esto significa que si modificamos, borramos o añadimos archivos, ésta incluirá esos cambios pero no así la rama master. Supongamos que hemos añadido la nueva funcionalidad y hemos modificado un par de archivos. Vamos a hacer un commit.

$ git commit -a -m 'añadida nueva funcionalidad chula chula de la ostia'
Created commit: a6b18c4: añadida nueva funcionalidad chula chula de la ostia
  2 files changed, 6 insertions(+), 0 deletions (-)

Ahora tenemos que hacer un cambio en un archivo de la rama master para arreglar un bug que nos han reportado la gente que está testeando esa rama y debemos corregirlo de manera inmediata para que puedan seguir con su trabajo. Podemos volver a la rama master y añadir allí los cambios sin preocuparnos de posibles inconsistencias con nuestra nueva rama nuevafuncionalidad

$ git checkout master
$ git commit -a -m 'arreglado el bug #00002345'
Created commit b89ae56: arreglado el bug #00002345
 1 files changed, 1 insertions(+), 1 deletions(-)

Ahora podemos ver las diferencias entre nuestras dos ramas usando el comando diff.

git diff --stat master nuevafuncionalidad
deliverance.py                      |      4 ++--
lib/nuevafuncionalidad.py           |      4 ++++
lib/test/test_nuevafuncionalidad.py |      4 ++++
3 files changed, 7 insertions(+), 2 deletions(-)

Además podemos crear un parche para aplicar uno al otro pero lo que realmente querremos hacer es mezclar ambas ramas, lo que se conoce como un branch merging

Mezclando Ramas

Hemos testeado profundamente nuestra nueva funcionalidad y estamos listos para moverla de la rama nuevafuncionalidad a la rama principal master. Dicha acción requiere que mezclemos el contenido de una de las ramas dentro de la otra, esto es lo que en Github llaman “Solicitud de Pull“ (realmente en Github lo que se hace es un git rebase pero esa funcionalidad la trataremos otro día).

Para realizar la mezcla de la rama nuevafuncionalidad dentro de master vamos a situarnos en la rama mater y a mezclar ambas:

$ git checkout master
$ git merge nuevafuncionalidad

Como veis esto es cualquier cosa menos traumática, realmente es muy sencillo mezclar ramas en Git. Una vez hemos mezclado nuestras ramas, y en caso de que no haya conflictos, podemos eliminar la rama nuevafuncionalidad por que no vamos a necesitarla más.

$ git branch -d nuevafuncionalidad

Resolviendo conflictos

¿Qué pasa si editamos el mismo archivo en ambas ramas y sobre las mismas líneas?. Pues que se generará un conflicto que tendremos que resolver a mano por que Git aunque es útil y potente, no tiene la capacidad de decidir que versión del código en conflicto es la correcta.

Imagina que hemos modificado el archivo deliverance.py en ambas ramas en las mismas líneas. Git generará un conflicto a la hora de la mezcla y siguiendo su política de no intrusión nos solicitará resolver el conflicto de manera manual.

$ git merge otrarama
Auto-merged deliverance.py
CONFLICT (content): Merge conflict in deliverance.py
Automatic merge failed; fix conflcits and then commit the result.

Como se puede apreciar, Git nos ofrece toda la información relevante para solucionar el conflicto y realizar un nuevo commit. El archivo problemático en este caso es deliverance.py.

    def send_delivery_request(request):
        self._server.request = request
< <<<<<< HEAD:deliverance.py
        self._rtime = 6000
===
        self._rtime = get_time_to_live(request)
>>>>>>> otrarama:deliverance.py
        # Send the request to the service
        self._server.send(self._rtime)

Podemos ver como hay un conflicto entre una y otra versión, mientras que en la rama principal se utiliza un valor hardcoded como tiempo máximo de respuesta, en el código de la rama otrarama se utiliza una función que devuelve un valor en base al request. Debemos de solucionar el problema y realizar un nuevo commit.

    def send_delivery_request(request):
        self._server.request = request
        self._rtime = get_time_to_live(request)
        # Send the request to the service
        self._server.send(self._rtime)
$ git add deliverance.py
$ git commit -m 'solucionando conflictos'
Created commit 17c688a: solucionando conflicto

Deshacer un Merge

En ocasiones veo muertos… no en serio. En ocasiones, querremos deshacer un merge por que la habremos cagado nosotros o otra gente de nuestro equipo de mala manera y encontraremos muchos conflictos a la hora de intentar seguir mezclando ramas o de trabajar normalmente. En esas ocasiones querremos deshacer de forma total el entuerto.

Git viene al rescate con el comando reset. Para hacer un reset de nuestro directorio de trabajo y volver atrás hasta antes de intentar mezclar las ramas, solamente debemos de ejecutar a nuestro buen amigo git reset.

$ git reset --hard HEAD

El parámetro --hard se asegura de que tanto nuestro índice de archivos como el directorio de trabajo cambien para que coincidan con lo que era antes del merge. Por defecto solo se restablece el índice, dejando los archivos parcialmente mezclados en el directorio de trabajo.

Si por casualidad has hecho un cambio y después de hacer un commit has decidido que era un error por que tus tests unitarios han empezado a romperse en mil pedazos (por ejemplo), aun puedes ir atrás y deshacer ese commit usando también reset.

$ git reset --head ORIG_HEAD

Esto es solo útil si lo que quieres es deshacer solo el último cambio. Si lo que quieres es deshacer un commit anterior a ese, entonces debes utilizar la herramienta revert que es un poco peligrosa y se aleja bastante del cometido de este post.

Conclusión

Git nos ofrece una forma sencilla de trabajar con ramas de desarrollo en nuestros proyectos. Y esto es solo la punta del Iceberg, Git nos ofrece otras funcionalidades como el stashing o el rebase de las que hablaremos en próximos artículos. Hasta entonces, ¡saludos y buen code merging!

Más Información | git revert, git rebase

Fuente:

genbeta.com

noviembre 10th 2017

3 servicios de VPN para proteger tu privacidad en redes Wi-Fi

Número de lecturas: 204
{lang: 'es-419'}

A la hora de proteger tu privacidad, especialmente navegando en redes inseguras, hay una herramienta que hoy en día se torna indispensable: un túnel VPN o Virtual Private Network.

Esta aplicación cifra la información del usuario que viaja entre el dispositivo y un servidor de confianza, logrando que este tráfico no pueda ser interceptado por ningún curioso conectado a la misma red.

El uso de esta herramienta aparece siempre entre nuestros consejos más populares, y su uso es cada vez mas necesario, especialmente tras la vulnerabilidad descubierta recientemente en el protocolo WPA2.

Pero a menudo recibimos consultas sobre qué servicio conviene elegir y cuáles son las ventajas y desventajas. Por eso, a continuación vamos a presentarte algunas opciones de servicios de VPN que puedes utilizar en todos tus dispositivos, especialmente en tu móvil, el cual es más propenso a conectarse a redes Wi-Fi públicas o desprotegidas.

Recuerda que ningún software es infalible ni mucho menos perfecto, pero seleccionamos estas opciones para que sepas por dónde empezar.

#1 Proton VPN

Este proyecto nace luego de que un grupo de entusiastas de la Organización Europea para la Investigación Nuclear (CERN) desarrolle Proton Mail, el primer servicio gratuito de correo electrónico cifrado.

Este servicio no solo funciona muy bien, sino que tiene el respaldo de organizaciones confiables como el CERN y el Massachusetts Institute of Technology. Además, su casa matriz se encuentra en Suiza, donde las leyes de protección de datos personales son mucho más estrictas que en otros países.

Esto hace que su política de privacidad sea clara: Proton VPN no guarda registros de navegación de sus usuarios ni de sus sesiones, exceptuando la sesión activa. Sin embargo, su versión gratuita solo permite navegar a través de servidores salientes en Estados Unidos, lo cual deja al usuario a merced de las leyes de privacidad de este país.

Proton VPN utiliza el protocolo Open VPN para sus conexiones y cifra la información del usuario con AES-256, y el intercambio de llaves se realiza con RCA-2048, lo cual hace que sea una conexión segura.

La desventaja es que, si bien tiene un cliente para Windows, no cuenta con opciones para otras plataformas. Sin embargo, es posible descargar los archivos de configuración y utilizar otro cliente VPN, como el Open VPN Connect que ellos mismos recomiendan para Android.

#2 Hotspot Shield

La compañía AnchorFree Inc. lanzó sus servicios de VPN en el año 2008, y ya lleva varios años en el mercado. Actualmente posee diferentes opciones para sus usuarios, entre las que incluye una versión básica y gratuita de su cliente VPN y diferentes planes de suscripción para sus versiones denominadas “Elite”.

Además, cuenta con clientes para todo tipo de plataformas: Windows, Mac, iOS, Android e incluso una extensión exclusiva para utilizar en el navegador Chrome.

Dentro de sus principales características, en la versión gratuita se destaca que no requiere autenticación ni login. Es decir que no le pide al usuario ninguna información personal para comenzar a utilizar el servicio.

También ofrece la posibilidad configurar la aplicación para que se conecte automáticamente, ya sea al iniciar otra aplicación o al detectar una red potencialmente insegura.

Hotspot Shield utiliza TLS 1.2 para establecer la sesión entre el usuario y sus servidores y generar la clave de cifrado. Luego, cifra la información del usuario utilizando el algoritmo AES con una llave de 128 bits.

Posee más de 20 opciones de servidores para su versión paga, pero en la versión gratuita permite navegar únicamente a través de los servidores en Estados Unidos, los cuales, en general, funcionan con buena velocidad y sin inconvenientes.

Si bien la versión gratuita no tiene limitaciones en cuanto a la cantidad de datos transmitidos, tiene la gran desventaja de mostrar publicidades. Cada 5 o 6 minutos se muestra una publicidad de pantalla completa, lo cual puede resultar tedioso, especialmente si utilizamos la conexión por varias horas.

#3 TunnelBear VPN

Esta aplicación lanzada por la compañía TunnelBear Inc. tiene un diseño bastante peculiar. Es muy amigable y fácil de utilizar, ya que basta con elegir el servidor de salida para que nuestro “oso” cave un túnel cifrado hasta este destino.

Además, es una de las pocas que ofrece salida a través de servidores en México y Brasil, lo cual mejora notablemente la velocidad de navegación para usuarios de Latinoamérica.

El servicio es multiplataforma y cuenta con versiones para Windows, Mac, Android, iOS e incluso una extensión para el navegador. La aplicación para Android tiene algunas configuraciones interesantes, como la opción de GhostBear, que agrega una capa extra de cifrado para hacer aún más difícil su detección.

La empresa remarca su política de privacidad, donde aseguran que no guardan los datos de navegación de sus usuarios. Sin embargo, la aplicación solicita registrar un correo para comenzar a utilizarla.

Una gran ventaja es que la versión gratuita de TunnelBear no muestra publicidades molestas al usuario, pero, en contramedida, solo permite 500 MB de tráfico por mes. En caso de necesitar ampliar esta cuota, el usuario tiene la posibilidad de duplicar la cantidad de datos compartiendo la aplicación en redes sociales y con amigos.

A la hora de elegir un servicio VPN existen múltiples alternativas, por lo tanto, antes de decidir, recuerda que el principal objetivo de estas aplicaciones es proteger tu información y tu privacidad.

Aquí planteamos algunas opciones de aplicaciones gratuitas, pero sabemos que nada es realmente gratis en este ambiente, por lo que te recomendamos prestar especial atención a la información que compartes y tomar los recaudos necesarios. Si tienes la posibilidad de invertir algo de dinero y elegir las versiones completas, hazlo, porque tu privacidad lo vale.

Por último, no olvides leer cuidadosamente los términos y condiciones del servicio que elijas utilizar, especialmente su política de privacidad. Después de todo, estarás depositando tu confianza y tu información en sus manos.

Fuente:

welivesecurity.com

noviembre 9th 2017

Descubren cómo ‘hackear’ los enlaces en Facebook para tenderte una trampa

Número de lecturas: 154
{lang: 'es-419'}

El investigador en ciberseguridad Barak Tawily ha desvelado que la red social por excelencia sigue siendo un coladero de noticias falsas y campañas de fraude y suplantación de identidad, a pesar de los esfuerzos de la compañía por mantener a raya a los atacantes. Aun así, existen varios trucos para que los usuarios estén a salvo de estas prácticas fraudulentas. Te mostramos a reconocerlas y evitarlas.

Cuando navegamos por Facebook y un enlace llama nuestra atención, una de las primeras cuestiones en la que nos fijamos para comprobar su veracidad es su procedencia. Ver que pertenece a una web que conocemos o nos parece fiablenos dará garantías. Aunque, por desgracia, no siempre será cierto. El experto en ciberseguridad Barak Tawily, de 24 años,  ha descubierto cómo enlaces de Facebook que parecen fiables pueden ser fraudulentos, lo cual pone en riesgo al usuario y cuestiona la seguridad de la red social, a pesar de los esfuerzos de la compañía por acabar con estas prácticas.

Hace más de un año, Facebook permitía cambiar el título, la descripción o la imagen de una publicación que se compartía en la red social. Esto daba lugar a una proliferación alarmante de contenido fraudulento, lo que llevó al equipo de Mark Zuckerberg a limitar estas ediciones en julio de este mismo año. “A partir de hoy, las páginas que no pertenezcan a editores no podrán reemplazar los metadatos de los enlaces (como el título, la descripción, o la imagen) en la API (término que se refiere en inglés a la interfaz de programación de aplicaciones) o en el editor de páginas”, anunciaba la compañía. Sin embargo, quedaba una excepción para colar ‘spam’:  las páginas de editores.

Algo que también cambiaron recientemente. “A partir del 12 de septiembre, las páginas de los editores solo pueden editar enlaces de dominios de sitios web que hayan autorizado con la herramienta de propiedad de enlaces”, explicaban desde el servicio de ayuda de Facebook para empresas. Aun así,  parece que el problema no está solucionado. Y lo más curioso es que se debe a la forma en que la propia compañía ha configurado la inserción de enlaces.

Como cuenta el investigador en su blog, cuando un usuario pega un enlace en su muro o lo envía a través de Facebook Messenger, un ‘bot’ llamado  Facebook External Hit extrae los datos relevantes del código HTML [el lenguaje en el que se diseñan las webs] y genera una vista previa con imagen, título, descripción y dominio de origen.

Ten cuidado con lo que te envían tus amigos a través de Facebook Messenger
Ten cuidado con lo que te envían tus amigos a través de Facebook Messenger

Tras indagar en su funcionamiento interno, Tawily encontró la clave para engañar a los usuarios. “El ‘bot’ de Facebook busca etiquetas HTML específicas, algunas son las conocidas como ‘meta’, concretamente con los valores ‘og: url’, ‘og: image’ y ‘og: title’”, explica. Estas metaetiquetas incluyen la información sobre el autor, el título, las palabras clave o la URL que se insertan en el encabezado de una página web y, aunque resultan invisibles para un visitante normal, son de gran utilidad para el posicionamiento en buscadores (el famoso SEO).

Según el análisis de Tawily, Facebook no valida si el enlace mencionado en la metaetiqueta ‘og: url’ es igual que la URL de la página. Así, es posible abusar de esta característica a través de metaetiquetas elaboradas. “En caso de que alguien suministre a Facebook una URL que lleve a un HTML con los etiquetas modificadas con datos falsos de otro sitio web (por ejemplo, YouTube), los datos de vista previa se verán como una canción de YouTube, pero el enlace real llevará a las víctimas a la URL que contiene el HTML malicioso”, detalla Tawily.

Este error permite a cualquier persona crear una URL personalizada simplemente editando las metaetiquetas de su web antes de publicar el enlace en la red social.

Cuando Tawily se percató del problema, él mismo contactó con la red social para informarles del error. Sin embargo, se encontró que desde la compañía negaban que esto entrañase un problema de seguridad. “Facebook incluye contenido generado por el usuario, por lo que la capacidad de inyectar contenido en una página, incluso en facebook.com, es una vulnerabilidad de muy bajo riesgo. Consideramos que los errores de suplantación de contenido como este son de bajo riesgo y de bajo impacto”, respondieron los de Zuckerberg.

Además le aseguraron a Tawily que todos los enlaces publicados son validados a través del sistema Link Shim. Este se encarga de verificar la URL compartida con una lista negra para evitar la suplantación de identidad y los sitios web maliciosos.

Así, este sistema de seguridad activo desde 2008 no solo no detectará un nuevo dominio que genere enlaces falsificados (pues de primeras no lo tendrá en su lista negra), sino que tampoco se percatará si modifica el  código de los metadatos como se demuestra en el siguiente vídeo:

En su blog, Tawily advierte que “hay muchas formas de aprovechar esta vulnerabilidad para realizar varios tipos de ataques, como robar información sensible como credenciales o tarjetas de crédito”. Muestra de ello es lo  ocurrido a mediados de octubre en una campaña de suplantación de identidad dirigida a usuarios de Suecia, Finlandia y Alemania.

Según detectó la firma finlandesa de seguridad F-Secure, se llegaron a efectuar casi un total de 200.000 clics. Estos se hacían sobre un enlace que parecía contener un vídeo de YouTube; sin embargo, los usuarios eran dirigidos a un sitio que los clasificaba según el tipo de dispositivo que estuvieran usando. Aquellos con móviles Android e iOS eran redireccionados a una web de ‘phising’ (una suplantación), mientras otros iban a parar a la web contenidosviral.net con una gran carga de anuncios maliciosos.

Con cada vez prácticas más sofisticadas, algunas veces resulta difícil no caer en estos engaños. Sin embargo, hay algunos trucos para no dejarse engatusar en la Red.

Por ejemplo, algo tan sencillo como desplazarse sobre el enlace antes de hacer clic para ver la dirección URL puede ayudarnos. Si vemos que aparecen palabras inconexas o alguna anomalía en el dominio, será mejor no acceder. También nos pondrá sobre aviso si en el contenido que se nos presenta vemos errores gramaticales, sobre todo si es una web con cierto renombre.

Oraciones mal redactadas o faltas ortográficas en las publicaciones deben hacernos sospechar.
Oraciones mal redactadas o faltas ortográficas en las publicaciones deben hacernos sospechar.

El sentido común también nos resultará útil. Aunque muchas veces la realidad supera la ficción, las publicaciones con titulares excesivamente impactantes pueden ser un cebo para el clic más peligroso.

Si alguno de nuestros amigos es quien comparte un enlace, tampoco hay que fiarse cuando detectamos anomalías. Por ejemplo, si nos lo envía por Facebook Messenger y nuestro amigo no se encuentra activo en el chat, puede que le hayan secuestrado la cuenta. Por eso lo mejor, antes de acceder a cualquier de estos enlaces, es preguntar a nuestro amigo para verificar que ha sido él quien nos lo ha mandado y no hay peligro.

Así que en internet, como en cualquier otro aspecto de la vida, la cautela debe ser la norma para no dejarse engañar y terminar con un buen susto por culpa de los ciberdelincuentes.

noviembre 1st 2017

¿Cómo eliminar un repositorio de Git creado con ‘git init’ en un directorio?

Número de lecturas: 276
{lang: 'es-419'}

Git guarda todos los cambios realizados en el directorio .git de la carpeta donde se el repositorio. Para eliminarlo simplemente hay que borrar esa carpeta.

cd carpeta/
rm -rf .git

Documentación de Git: http://git-scm.com/documentation

Fuente:

http://polemicus.com