¿Es auth.uid un secreto compartido?
Parece que cuando alguien se autentica a través de oAuth, Firebase crea un uid que se parece a google:111413554342829501512
, por ejemplo.
En las reglas de Firebase, puedes hacer (leer y/o escribir):
".read": "root.child('users').child(auth.uid).child('isAdmin').val() == true"
¿Se supone que no puedo leer el mensaje rastreando la red debido al uso de HTTPS? ¿Es así como funciona: el UID es una clave compartida utilizada por las reglas de Firebase?
Veo ese UID en firebase:session::ack
el almacenamiento local de mi navegador una vez autenticado.
Conocer la identificación de usuario de alguien no es un riesgo para la seguridad.
Por ejemplo, sé que su ID de usuario de Stack Overflow es 4797603. Ese solo hecho me permite potencialmente encontrarlo en Stack Overflow.
Pero de ninguna manera me permite fingir que soy Ron Royston. Para hacer esto último, necesitaría saber el nombre de usuario y la contraseña (y cualquier otro factor) que utilice para iniciar sesión.
Lo mismo se aplica a Firebase. Si sabes que mi uid en alguna aplicación respaldada por Firebase es google:105913491982570113897
, no puedes fingir ser yo de repente. Los servidores de Firebase verifican que el auth.uid
valor se base en las credenciales reales de ese usuario. La única forma de hacerlo es iniciando sesión como yo, lo que en este caso requiere que conozcas mis credenciales de Google.