fbpx
  • info@qualitynet.cl
  • Quality Net - Tecnología e Innovación

Blog

ByQuality Net

Reglas de Seguridad Avanzadas con Firebase y Firestore

Firestore es una base de datos no relacional muy flexible de la familia de Firebase y gracias las reglas de seguridad podemos administrar el acceso y las capacidades de nuestros usuarios para que puedan o no realizar ciertas acciones en nuestra base de datos.

Estas reglas son muy sencillas de configurar pero también son muy poderosas. Firebase se encarga del trabajo pesado. Solo debemos conocer muy bien nuestra aplicación y comprobar que las reglas realmente pueden proteger la integridad de nuestras aplicaciones.

Modelo de Datos en Firestore: Documentos y Colecciones

Tenemos diferentes tipos de objetos para construir nuestras aplicaciones con Firestore: colecciones y documentos sencillos o complejos.

Documentos: Los documentos (sencillos) son diccionarios de datos que podemos guardar en formato de llave => valor. Además, podemos crear documentos anidados, algo así como subdocumentos. Si estás acostumbrado al mundo de JavaScript puedes entender estos documentos complejos como objetos; cada objeto puede tener más objetos y así sucesivamente.

Sin embargo, los documentos complejos también pueden volver nuestras aplicaciones –aún– más complejas. Firebase nos permite hacer consultas por documentos, esto significa que si tenemos una cascada de subdocumentos nuestras consultas van a tomar cada vez más tiempo y van a ser más difíciles de mantener.

Colecciones: Las colecciones son conjuntos de documentos. Podemos tener una colección de usuarios, una colección para las pizzas, otra para tipos de animales, etc. Más que todo sirven para organizar nuestra información. La recomendación es no tener ni más ni menos colecciones de las que realmente necesitamos.

Al tener muchas colecciones, por no guardar todo en un mismo sitio, vamos a necesitar referencias que nos indiquen dónde conseguir los datos que hacen falta. Esto significa que debemos hacer demasiadas consultas para conseguir la información suficiente. Vamos a gastar mucho tiempo entre consulta y consulta.

De la misma forma, si usamos muy pocas colecciones (abusando de los documentos anidados), cada consulta va a tomar más tiempo de lo que podemos esperar y vamos a recibir mucha información que realmente no vamos a utilizar.

En resumen: Usa Firestore con responsabilidad.

Reglas de seguridad

Las reglas de seguridad nos ayudan a determinar quién puede o tiene permisos para hacer algo: leer, escribir, crear, actualizar, borrar, entre otras. Podemos restringir el acceso a toda una colección o a documentos específicos dependiendo de nuestra lógica de negocios.

Debemos entender muy bien cómo funcionan nuestras aplicaciones y personalizar estas reglas con diferentes combinaciones hasta “asegurarnos” que realmente funcionan como debe ser.

Cómo crear una regla de seguridad:

  • Service: Todas las reglas comienzan especificando el servicio sobre el cual deben actuar. En este caso, debemos indicarle a Firebase que queremos usar Firestore con la siguiente expresión:
service cloud.firestore {
  ...
}
  • Match: Indicamos las colecciones y documentos sobre los cuales deben a aplicar nuestras reglas de seguridad. Podemos tener múltiples expresiones match. Incluso, unas dentro de otras:
service cloud.firestore {
  match /databases/{database}/documents {
      match /<some_path>/ {
        ...
      }
      match /<some_other_path>/ {
        ...
      }
  }
}
  • Allow: Definimos los permisos para la “ruta” de colecciones y documentos que definimos anteriormente. Podemos usar las expresiones read, write, create, update o delete seguido de dos puntos (:), la expresión if y la condición que debemos cumplir para otorgar o denegar el permiso:
service cloud.firestore {
  match /databases/{database}/documents {
      match /test/ {
        allow read, write: if true;
      }
      match /<some_other_path>/ {
        allow create, delete: if false;
      }
  }
}

Siempre debemos escribir un punto y coma ; al final.

Afortunadamente, no solo podemos usar las expresiones true y false para limitar el acceso a ciertas partes de nuestra base de datos; también podemos acceder a la información de los usuarios que realizan las peticiones, los datos guardados en los documentos que queremos actualizar y los nuevos campos que los usuarios envían para editar los documentos.

Ejemplos de Reglas de Seguridad

A continuación, vamos a ver algunos ejemplos de reglas de seguridad para casos muy específicos. Pueden ser de utilidad para ti, tu equipo o tu aplicación.

  • Denegar el acceso de lectura y escritura a todos los usuarios en cualquier condición:
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
  • Permitir el acceso de lectura y escritura a todos los usuarios en cualquier condición (!NUNCA USES ESTA REGLA EN PRODUCCIÓN!):
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}
  • Usuarios: Permitir acceso de lectura y escritura en todos los documentos a cualquier usuario autenticado:
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.id != null;
    }
  }
}
  • Usuarios: Permite la escritura en el documento de usuarios solo si el usuarios que queremos modificar es el mismo usuario que intenta modificar su propia información:
service cloud.firestore {
  match /databases/{database}/documents {
    match /users {
      allow read, write: if request.resource.data.username == resource.data.username;
    }
  }
}
  • Caso real de usuarios:
    1️⃣ Permite la creación de usuarios si estamos autenticados (porque si el usuario no existe, no podemos verificar los IDs).
    2️⃣ Permite la escritura en el documento de usuarios solo si el usuarios que queremos modificar es el mismo usuario que intenta modificar su propia información:
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      // Podemos modificar la data del usuario si el userId del modificador
      // es el mismo del usuario a modificar...
      allow read, update, delete: if request.auth.uid == userID;

      // Permite crear usuarios si estamos autenticados porque, si el usuario
      // no existe, no podemos verificar su ID...
      allow create: if request.auth.uid != null;
    }
  }
}
  • Caso real con ciudades:
    1️⃣ No permite la actualización si cambia el nombre de la ciudad.
    2️⃣ Permite modificar la información de las ciudades siempre y cuando siga teniendo poblacion.
service cloud.firestore {
  match /databases/{database}/documents {
    match /cities/{city} {
      allow update: if request.resource.data.population > 0
        && request.resource.data.name == resource.data.name;
    }
  }
}
  • Blog: Publicaciones y Borradores: Permitir que los campos is_public y can_edit de cada documento determinen si la información puede ser leída o actualizada y por quién:
service cloud.firestore {
  match /databases/{database}/documents {
    match /cities/{city} {
      allow read: resource.data.is_public == true;
      allow read: resource.data.can_edit == "any";
    }
  }
}

Bonus: El Simulador

Firebase nos ofrece un simulador: una herramienta para comprobar que nuestras reglas de seguridad permiten o restringen el acceso a nuestros datos de manera correcta. No dudes en probar estas y todas las combinaciones de reglas de seguridad que se te ocurran.

Firebase: Simulador de Reglas de Seguridad

Sin embargo, recuerda que no podemos confiar al 100% en este simulador. La mejor forma de comprobar que nuestras reglas realmente funcionan como esperamos es programando el código de nuestras aplicaciones y probar sin miedo 🔥.

Conclusiones

Las reglas de seguridad en Firestore son una de mis características favoritas entre todos los servicios de Firebase. Vale totalmente la pena invertir un buen tiempo en crearlas y organizarlas correctamente.

Puedes aprender mucho más sobre los servicios de Firestore y Firebase Authentication con el Curso de Firestore para Android. Vamos a construir una aplicación móvil para consumir cripto-monedas en tiempo real. Nuestro profesor será Santiago Carrillo, @sancarbar, Google Developer Expert en Android con más de 7 años de experiencia creando aplicaciones.

Te invito a estudiar las mejores prácticas de todos estos servicios. Ya sabes, un gran poder conlleva una gran responsabilidad.

#NuncaParesDeAprender 🤓💚

ByQuality Net

Netflix Marzo 2019: Estas son todos los estrenos para el tercer mes del año

Revisamos la cartelera de novedades en películas, series, documentales e infantil de Netflix para el mes en que en el cono Sur se acaban las vacaciones.

Netflix se renueva con nuevas series y con películas para el mes de Marzo, mes que despide el verano en el hemisferio Sur y saluda a la primavera en el norte

¿Y cuáles son algunas de las novedades para marzo?

En Queer Eye podrás conocer cómo el querido quinteto de expertos en estilo asesora a distintas personas y les dan consejos únicos, ayudándolos a hacer cambios profundos en sus vidas.

Para las tardes libres llegan las comedias a Netflix. En Turn Up Charlie, veremos a Idris Elba interpretar a un fracasado DJ y eterno soltero que debe cuidar a la problemática hija de su mejor amigo, mientras busca relanzar su carrera.

Netflix

En la tercera temporada de Santa Clarita Diet, Sheila y Joel deberán escoger entre una vida normal o la juventud eterna. Ahora, si lo tuyo es la animación, no te puedes perder Love, Death & Robots, la serie antológica de David Fincher y Tim Miller.

Netflix

Y desde el extranjero aterrizamos a Latinoamérica. El chileno Pedro Pascal será uno de los protagonistas de Triple Frontera, junto a Ben Affleck, Oscar Isaac, Charlie Hunnam, Garrett Hedlund y Adria Arjona. La cinta cuenta cómo un grupo de ex soldados planea realizar un millonario robo a un conocido narcotraficante.

Netflix

Netflix Marzo

Series

Queer Eye: Temporada 3 (15/03/2019)

Los Fab Five viajaron a Kansas City, Misuri, para otra temporada de cambios emotivos y transformaciones impresionantes.

Turn Up Charlie (15/03/2019)

Idris Elba interpreta a un DJ fracasado que intenta relanzar su carrera mientras cuida de la hija de un exitoso amigo suyo.

Historia de un crimen: Colosio (22/03/2019)

Dramatización del asesinato del candidato a presidente mexicano Luis Donaldo Colosio en 1994. Primera entrega de una antología de crímenes sin resolver en América Latina.

Santa Clarita Diet: Temporada 3 (29/03/2019)

Joel y Sheila se enfrentan a un nuevo dilema cuando tienen que elegir entre una vida normal o una juventud eterna. ¿El amor verdadero nunca muere?

Love, Death & Robots (15/03/2019)

Una serie de antología de animación con Tim Miller y David Fincher como presentadores.

Coisa Mais Linda (22/03/2019)

Después de la desaparición de su marido, Maria Luiza convierte su propiedad en un club de bossa nova y descubre su independencia.

Formula 1: Drive to Survive (08/03/2019)

La velocidad, la presión, la competencia. Vive la Fórmula 1 a través de sus protagonistas, desde las pistas hasta las oficinas.

Arrested Development: Temporada 5B (15/03/2019)

Los Bluth se siguen dedicando a hacer un desastre de sus vidas personales y profesionales, y Michael es otra vez incapaz de abandonarlos, aunque lo lleven al límite.

La orden secreta (07/03/2019)

Tras unirse a una sociedad secreta, el estudiante universitario Jack Morton entra a un mundo donde los hombres lobo luchan contra los que dominan la magia negra.

Terrace House: Opening New Doors: Parte 6 (12/03/2019)

Kaito y Risako pasan el rato con sus compañeros mientras Yui y Aio intentan ponerse de acuerdo sobre el siguiente paso. Nada es seguro, solo su amistad.

Shadow (08/03/2019)

Atormentado por una tragedia personal, un exoficial incapaz de sentir dolor se lanza a atrapar malhechores que escapan de la policía de Johannesburgo.

Selling Sunset (22/03/2019)

Bienvenidos a un reality glam sobre las vidas privadas, acuerdos exorbitantes y clientes de alto perfil de los agentes inmobiliarios más elitistas de Los Ángeles.

Atlanta: Temporada de robos (02/03/2019)

Earn está convencido de que puede lograr que Alfred sea una estrella de rap. Pero, en el camino, aprenderán que no se puede confiar en todo el mundo.

Atlanta

La vida desastrosa de Saiki K.: Temporada 3 (01/03/2019)

Iba a ser un divertido viaje con amigos, hasta que una catástrofe pone en grave riesgo a la ciudad de Oshimai y la existencia de Kusuo y el resto de Japón.

On My Block: Temporada 2 (Disponible en marzo)

En un barrio problemático de Los Ángeles, la amistad de cuatro adolescentes inteligentes y divertidos se pone a prueba.

Rosario Tijeras (versión mexicana): Temporada 2 (01/03/2019)

Rosario se encuentra en medio de una sangrienta venganza entre dos jefes del crimen y tendrá que hacer lo imposible para recuperar al amor de su vida.

Películas

Emboscada final (29/03/2019) La historia jamás contada de los detectives que capturaron a Bonnie y Clyde cobra vida en este drama protagonizado por Woody Harrelson y Kevin Costner.

Triple frontera (13/03/2019) Son ex soldados de operaciones especiales y sienten que su servicio por la patria no tuvo recompensa. El plan: robar setenta y cinco millones a un narco sudamericano.

El niño que domó el viento (01/03/2019) Un chico se inspira en un libro de ciencia ficción para crear un molino de viento que salve a su aldea malauí del hambre.

Durante la tormenta (22/03/2019) Vera salva la vida de un niño que vivió en su casa 25 años antes, pero despierta en una nueva realidad donde su hija nunca ha nacido…

The Dirt (22/03/2019) En esta dramatización de la autobiografía de Mötley Crüe, la banda alcanza las notas más altas y las más bajas del superestrellato del heavy metal.

Tu hijo (01/03/2019) Un cirujano decide hacer justicia por mano propia luego de que golpean brutalmente a su hijo en las puertas de un club nocturno.

Bayoneta (29/03/2019) Un exboxeador de Tijuana trabaja como entrenador en un gimnasio de Finlandia y, por la noche, bebe solo. Hasta que le toca demostrar su valor una vez más.

Realmente amor (01/03/2019) Esta encantadora comedia romántica cuenta diez historias de amor entrelazadas, que llegan a su punto culminante en la Nochebuena.

Magnolia (05/03/2019) Por intervención divina, casualidad, historia o acción humana, las vidas de un ecléctico grupo de personajes se van entretejiendo.

Escobar: La traición (01/03/2019) Virginia Vallejo reflexiona sobre su peligroso pero estimulante amorío con Pablo Escobar durante la creación de su imperio narco y la era de los crímenes atroces.

Escobar

Dry Martina (16/03/2019) El extraño encuentro con un fan lleva a una cantante argentina dueña de su cuerpo y sexualidad a una escapada en Chile.

La doncella (01/03/2019) El plan de un estafador de conquistar a una heredera y quedarse con su fortuna se complica cuando él se enamora de la sirvienta que contrató como su cómplice.

Girl (15/03/2019) Lara es una bailarina de quince años que lucha contra obstáculos físicos y emocionales mientras se prepara para cambiar de sexo. Inspirada en una historia real.

Tiempo en contra (01/03/2019) Un corredor de autos deberá trabajar con una inteligente y enigmática chica para salvar a su mujer, raptada por alguien que todo lo ve.

Cómo enamorar a una chica punk (01/03/2019) Tras un encuentro con una secta alienígena, un adolescente punk se enamora de una chica rebelde de otra galaxia desesperada por saber qué es ser humano.

Johnny English (01/03/2019) Hay un francés en busca de las joyas de la corona y del trono en sí, pero por suerte el agente secreto por excelencia, Johnny English, está al tanto de todo.

Documentales y especiales

Jimmy Carr: The Best of Ultimate Gold Greatest Hits (12/03/2019)

Prepárense que ahí viene Jimmy Carr con los mejores remates de su legendaria carrera en el stand up. No va a quedar títere con cabeza.

Amy Schumer Growing (19/03/2019)

Amy Schumer habla del matrimonio, el embarazo, la política y más en este especial de stand up filmado en el Chicago Theatre.

Losers (01/03/2019)

Serie documental que analiza la psicología de la derrota a través del deporte. En una sociedad en la que lo único que importa es ganar, ¿cómo enfrentamos el fracaso?

La leyenda de la isla con coca (29/03/2019)

Este documental sigue la travesía de un estadounidense que se obsesiona con una leyenda que lo lleva hacia el Caribe, donde espera encontrar una mítica bolsa de coca.

ReMastered: La masacre de la Miami Showband (22/03/2019)

Irlanda del Norte, año 1975. Tres miembros de la famosa banda The Miami Showband fueron asesinados por lealistas del Úlster. ¿El crimen tuvo algo que ver con el Gobierno?

El arma elegida (02/03/2019)

Dos cineastas conversan con vendedores y poseedores de pistolas Glock para mostrar el impacto de las políticas violentas y sus consecuencias desde Chicago hasta Kirkuk.
Niños y familia

Charlie en Villacolores (22/03/2019)

Charlie es un niño adorable y divertido que te invita a expediciones impensadas junto a personajes llenos de vida y color.

Robozuna: Temporada 2 (15/03/2019)

Ariston, Mangle y los Robolibertadores están de vuelta, pero proteger su hogar se hace más difícil cuando el malvado Danuvia descubre a un poderoso robot llamado Dominatus.

¡YooHoo al rescate! (15/03/2019) Cinco dulces criaturitas de la mágica YooTopia trabajan en equipo y usan todo tipo de aparatos geniales para ayudar a los animales en problemas, ¡siempre haciendo amigos!

LEGO – Liga de la Justicia: Batalla cósmica (01/03/2019)

Batman y la Liga de la Justicia se enfrentan al archibrillante villano mecánico Brainiac, que pretende sumar a la Tierra a su lista de planetas conquistados.

Masha y el oso: Temporada 3 (01/03/2019) Masha y su amigo Oso inventan cuentos de hadas, aprenden sobre tecnología, celebran la amistad y descubren que los osos y las abejas no se llevan nada bien.

Disney – Descendientes (18/03/2019)

El hijo de la Bella y la Bestia propone recibir a los descendientes de los villanos de los cuentos de hadas, lo que desata una lucha épica entre el bien y el mal.

Disney – Atrapada en el medio: Temporada 3 (01/03/2019)

Los Díaz viven grandes cambios, que incluyen la preparación de Harley para su quinceañera y una pelea con Aidan, el nuevo (y molesto) vecino.

La máscara 2: El hijo de la máscara (01/03/2019)

La vida de Tim cae en picada cuando su perro encuentra una máscara con el poder de convertir a quien la use en un lunático imparable a la hora de hacer travesuras.

ByQuality Net

¿Cómo ayuda Outbrain a mejorar el SEO?

Actualmente, el SEO reúne grandes esfuerzos de los medios online cuyo objetivo de estar en una posición privilegiada en los buscadores. Muchos expertos en esta estrategia se han cuestionado a lo largo de los años si realmente las herramientas surgidas para mejorar las posiciones han servido de algo.

Actualmente, el SEO reúne grandes esfuerzos de los medios online cuyo objetivo de estar en una posición privilegiada en los buscadores. Muchos expertos en esta estrategia se han cuestionado a lo largo de los años si realmente las herramientas surgidas para mejorar las posiciones han servido de algo.

Sin embargo, las dudas se han disipado con Outbrain. Este widget ha proporcionado gran valor tanto a editores, haciendo que el tráfico del sitio aumente, como a anunciantes, a los que distribuye contenido en otros sitios web con Outbrain Amplify.

Para ello, Outbrain está basado en JavaScript, por lo que Googleno puede leerlo. Y es que, a pesar de etso, el widget no viola las directrices marcadas por el buscador, sino que es un elemento más de la página web.

Esto es debido a que Outbrain no transfiere ningún enlace de un sitio a otro ya que paid.outbrain.com, que es el encargado de hacer circular el tráfico, usa la denominación ”noindex”, invisible a ojos de Google. Sin embargo, este tráfico no es orgánico puro. Pueden ser considerados de referencia.

Otra característica de Outbrain es que no se carga de manera simultánea respecto a la velocidad de carga de la página, por lo que no ralentizará ni dañará el rendimiento de la página B y así mejorar la experiencia del usuario. Al conocer la experiencia del usuario, Outbrain sabe como seguir optimizando el rendimiento e identificar cualquier problema que surja.

Redirigir el tráfico a través del dominio de Outbrain puede ser fundamental para la seguridad del SEO y el flujo del link juice. Por esta razón, se han creado widgets de recomendaciones de contenido están diseñados para ayudar a los usuarios a navegar de forma en que la navegación tradicional nunca lo haría. Outbrain ofrece la posibilidad a los portales de obtener backlinks naturales.

Y es que es bien sabido que mejorar la reputación SEO conlleva numerosos esfuerzos y grandes plazos de tiempo. Es por eso por lo que cualquier impulso, por mínimo que que sea, es importante para escalar posiciones junto al contenido de alta calidad creado por las propias páginas web.

ByQuality Net

Javascript se está comiendo el mundo

Si has oido las noticias ultimamente, Javascript y NodeJs se están comiendo el mundo del software.

NodeJs es un ambiente Backend hecho con y para Javascript que corre en los motores V8 que desarrolla y mantiene Google Chrome. Podríamos pensar que es una tecnología “hipster”, pero NodeJs se está convirtiendo rápidamente en uno de los ambientes más comunes para desarrollar aplicaciones web y ya cuenta con una cantidad impresionante de Fans. Personalmente no lo he usado tan a fondo como quisiera, pero sencillamente me encanta y cada día quiero usarlo más.

Si no me crees, te dejo una lista de las 4 gigantes que adoptaron esta tecnología Javascript/Nodejs que les permite poseer plataformas de tráfico pesado y alta calidad de funcionamiento.

Netflix

Netflix adoptó Javascript y NodeJs para transformar su sitio web en una SPA (Aplicación de una página). Inicialmente Netflix usó por mucho tiempo Java para mantener sus plataformas, pero “a medida que migramos nuestro centro de datos a la nube nos trasladamos a una arquitectura más basada en servicios”, dice Trott, un miembro del equipo.

Aunque Java aún le da poder al Backend de Netflix todas las cosas que el usuario ve vienen de NodeJs. Además de Node, Netflix usa algo aún más popular estos días, que si no adivinas te digo: ReactJs.

Netflix

Paypal

Paypal también está moviendo su aplicación de Java a Javascript con NodeJs. Paypal comenzó usando NodeJs como un prototipo en su plataforma y cuando ya habian probado y comprobado su correcto funcionamiento y se habian asegurado de su eficiencia, decidieron colocar todo a producción.

El primer uso que hicieron de NodeJs en su plataforma de producción fue en una parte menor de su aplicación, y fué en la página más vista de su app, que es la de resumen de cuenta supongo. El equipo de desarrollo de Paypal desarrolló al mismo tiempo la misma página usando Java y otro Javascript, y al final se dieron cuenta que el equipo que desarrollo con Javascript logró el mismo resultado más eficientemente y más rápido que su contrario.

Desde la transformación de Paypal a NodeJs, lanzaron su propia ‘release’ de una extensión del Framework ExpressJs llamado KrakenJs el cual puede agregar muchas características de seguridad y escalabilidad a tu servidor con NodeJS.

Paypal

IBM

IBM también ha adoptado NodeJS. Myles Borins de IBM habló sobre sus experiencias durante la última conferencia NodeJS Interactive. Dijo: “Durante octubre de 2015 me dieron la tarea de trabajar en The Canary in the Gold Mine, una utilidad de smoke testing que automatiza pruebas unitarias en ejecución de varios módulos diferentes en el ecosistema NodeJs. Ha sido increíblemente exitoso, encontrando todo tipo de regresiones a través del ecosistema”.

Microsoft

Incluso Microsoft ha abrazado NodeJS, ofreciendo integraciones directas en su Plataforma Azure, lanzando una gran cantidad de tutoriales dirigidos a Node e incluso han anunciado planes para forjar el proyecto y construir su propia versión de Node impulsado por su motor Edge Javascript en lugar del V8 de Chrome.

Hoy puedes encontrar de todo un poco funcionando con Javascript, desde editores para código como Atom hasta juegos enteros. De hecho, puedes programar el vuelo de Drones con Javascript, entonces no esperes más para aprenderlo y aplicarlo en tu crecimiento como desarrollador sino te vas a arrepentir.

Si conoces otro gigante tecnológico usando NodeJs, si tienes algún comentario sobre este artículo por favor déjalo acá. Compártelo y veamos si alguien más tiene otra opinión del tema, aprendamos juntos! Cheers.

¿Por qué limitarte a usar herramientas cómo Power Point? Te presentamos 5 librerías JavaScript para que logres tus presentaciones justo como las tienes en mente.