Exportar BD PostgreSQL y cargarla en otro servidor

Pueden ser varios los motivos por los que necesitemos exportar nuestra base de datos: Mantener respaldos, migrar a otro servidor, cargarla en local para ejecutar pruebas peligrosas, etc.

Para poder ejecutar estas operaciones es necesario tener conocimiento de algunas herramientas que trae PostgreSQL. Probablemente has intentado hacerlo desde algún cliente como DBeaver, pero por lo general los clientes de BD no son muy buenos ejecutando estas tareas.

Por esta razón, la mejor forma de volcar una base de datos siempre será utilizando las herramientas oficiales que nos provee cada motor. En esta entrada vamos a ver como usar estas herramientas para exportar una base de datos PostgreSQL de un servidor e importarla en otro.

Read more →

Usar puertos bajo 1024 sin root

La problemática es simple: Tenemos una maquina donde queremos correr un servicio en un puerto privilegiado (como 80 o 443), pero al intentar arrancar este servicio nos arroja un error de permisos.

Y es que si no arrancamos el servicio como root, no podremos usar ningún puerto bajo el 1024. Esto corresponde a una política de seguridad que protege los puertos well-known de ser utilizados por usuarios no privilegiados.

Por otro lado, ejecutar un proceso como root no es una buena practica de seguridad. Entonces, cual es la forma correcta de correr un servicio en un puerto privilegiado sin ser root? A continuación se explica en 3 pasos como utilizar authbind para poder asignar puertos privilegiados a usuarios no privilegiados.

Read more →

Implementar HTTPS en NestJS

Poner una API en producción es complicado, principalmente porque son varios aspectos los que hay que cuidar. Uno de esos es la seguridad. Cuando exponemos un API siempre queremos utilizar HTTPS para mantener la seguridad de los usuarios y evitar que el tráfico pueda ser registrado por terceros.

En este artículo veremos como exponer una aplicación NestJS vía HTTPS. Para generar el certificado utilizaremos el siempre confiable Let’s Encrypt. Si ya cuentas tanto con certificados y una aplicación NestJS, puedes dirigirte directo al final del artículo para que veas como se implementa en código.

Read more →

Cómo cifrar contraseñas de forma segura

Cuando desarrollamos un sistema de usuarios, siempre queremos tratar de implementar la mayor seguridad posible para que el mecanismo de autenticación sea impenetrable. Uno de esos puntos consiste en cifrar las contraseñas de los usuarios, de este modo, si un atacante se hace con una contraseña, no tendrá modo de descifrarla y saber cual es realmente la contraseña.

Antiguamente era muy común ver que estos sistemas se implementaban utilizando MD5 o SHA-1. Si bien estos algoritmos ya están deprecados, hoy se continúan utilizando versiones más nuevas como SHA-256 o SHA-512. El problema de todos estos algoritmos es que no se concibieron pensando en la encriptación de contraseñas, por lo que no deben ser utilizados para este propósito, y todo tiene que ver con la velocidad de cifrado.

Read more →

Angular: Cargar datos antes de iniciar la aplicación

Es común tener que completar combos con datos paramétricos o bien recuperar datos de usuario que se ocupan en distintas partes de una aplicación. Por lo general escribimos un servicio que los va rescatando a medida que los necesitamos, pero esto no es óptimo ya que estaremos consultando varias veces la fuente de datos creando tráfico de más.

La solución más práctica es precargar todos los datos antes de que inicie la aplicación. Esto nos permitirá ahorrar tiempo de carga en cada componente y centralizar la ubicación de estos datos en un único servicio, por ejemplo.

En este artículo vamos a ver como implementar un hook al inicio de Angular, puedes también clonarte el repo de ejemplo o ver el proyecto directo en StackBlitz.

Read more →