javascript - paginas - notificaciones push firebase android
¿Cómo puedo asegurarme de que solo mi propio sitio web(código del cliente) pueda hablar con el backend de Firebase? (1)
He leído sobre Firebase y parece increíble lo que quiero hacer. He leído sobre la autenticación y cómo, según las reglas, ciertos usuarios que han iniciado sesión están autorizados a hacer cosas diferentes. Al bien.
Sin embargo, no estoy seguro acerca de otro tipo de seguridad: ¿cómo me aseguro de que solo mi propio sitio (mediante javascript del lado del cliente) pueda hablar con mi backbase de firebase? Lo estoy preguntando porque afaik no hay manera de evitar que alguien busque mi punto final de firebase desde el código del lado del cliente (url que apunta a mi backend específico de firebase) y empiece a usar eso para Dios sabe qué.
Esto es especialmente preocupante en situaciones en las que quiero abrir escrituras en la función de usuario anónimo. (por ejemplo, algunos análisis quizás)
Cualquier ayuda para aclarar mi mente sobre esto es muy apreciada.
En mi opinión, esto no es tanto una pregunta sobre la seguridad de Firebase como una discusión general de la arquitectura de Internet tal como está hoy. Como la web es una plataforma abierta, no puedes evitar que nadie visite una URL (incluida tu Firebase) más de lo que puedes evitar que alguien pase más allá de tu casa en el mundo real. Si pudiera, un visitante aún podría mentir sobre el sitio de origen y tampoco hay manera de detenerlo.
Asegure sus datos con autenticación. Utilice los dominios autorizados en Forge para evitar CSRF . Establezca reglas de seguridad para evitar que los usuarios hagan cosas que no deberían. La mayoría de las escrituras de datos que usaría un servidor para evitar se pueden lograr solo con las reglas de seguridad.
Esta es en realidad una de las cualidades más finas de los servicios Firebase y API en general. El cliente está completamente aislado y, por lo tanto, se reemplaza o extiende fácilmente. Siempre que demuestres que estás permitido y sigues las reglas, el lugar al que llamas no es importante.
En cuanto al acceso anónimo, si pudiera hacer que solo lo visitaran desde su sitio, eso no detendrá las escrituras malintencionadas (puedo abrir mi depurador de JavaScript y escribir tantas veces como quiera mientras estoy sentado en su sitio). En su lugar, coloque estrictas normas de seguridad sobre el formato, el contenido y la longitud de los datos que pueden escribir los usuarios anónimos, o ahorre algo de tiempo y encuentre un servicio existente para manejar sus análisis, como el omnipresente Google Analytics.
Por supuesto, puede usar un servidor como intermediario como lo haría con cualquier almacén de datos. Esto es útil para algunos tipos avanzados de lógica que las reglas de seguridad no pueden aplicar o confiar para un usuario autenticado (como la mecánica de juegos avanzada). Pero incluso si oculta Firebase (o cualquier base de datos o servicio) detrás de un servidor para evitar el acceso, el servidor todavía tendrá una API y aún enfrentará los mismos desafíos de identificar los orígenes de los clientes, siempre que se encuentre en la web.
Otra alternativa al acceso anónimo es usar el inicio de sesión personalizado , que permitiría a un servidor crear sus propios tokens de acceso de Firebase (un usuario no necesariamente tendría que autenticarse para esto, la firma de los tokens depende completamente de usted). Esto es ventajoso porque, si el usuario anónimo se comporta mal, el token de acceso puede revocarse ( al guardar un valor en Firebase que las reglas de seguridad usan para imponer el acceso).
ACTUALIZAR
Firebase ahora tiene una autenticación anónima integrada en el inicio de sesión simple, no es necesario usar el inicio de sesión personalizado para casos de uso común aquí.