remove Función de nube de Firebase: cómo lidiar con la solicitud continua




recuperar datos firebase web (2)

Al trabajar con Firebase (función de nube de Firebase en este caso), tenemos que pagar por cada byte de ancho de banda.

Entonces, me pregunto cómo podemos tratar con el caso de que alguien que de alguna manera descubra nuestro punto final haga una solicitud continua intencionalmente (mediante un guión o herramienta).

Hice algunas búsquedas en Internet, pero no veo nada que pueda ayudar. Excepto por este pero no realmente útil.


Como no especificó qué tipo de solicitud, supongo que quiere decir http (s) -triggers en las funciones de Firebase Cloud.

Hay múltiples limitadores que puede poner en su lugar para 'reducir' el ancho de banda consumido por la solicitud. Escribiré algunos que me viene a la mente

1) Limitar el tipo de solicitudes

Si todo lo que necesita es GET y diga, por ejemplo, que no necesita PUT , puede comenzar devolviendo un 403 para eso, antes de ir más allá en su función de nube.

if (req.method === 'PUT') { res.status(403).send('Forbidden!'); }

2) Autentica si puedes

Siga el ejemplo de Google aquí y permita que solo los usuarios autorizados utilicen sus extremos https. Simplemente puede lograr esto al verificar tokens como esta respuesta SOF a esta pregunta .

3) Verificar el origen

Puede intentar verificar el origen de la solicitud antes de ir más allá en su función en la nube. Si recuerdo correctamente, las funciones en la nube le dan acceso completo a los objetos HTTP Request / Response para que pueda establecer los encabezados CORS apropiados y responder a las solicitudes de OPCIONES previas al vuelo.

Idea Experimental 1

Puede hipotéticamente poner sus funciones detrás de un equilibrador de carga / cortafuegos , y desencadenar el relé. Más o menos vencería el propósito de la naturaleza escalable de las funciones de nube, pero si una forma de DoS es más importante para usted que la escalabilidad, entonces podría intentar crear un relé de motor de aplicación, ponerlo detrás de un equilibrador de carga / firewall y manejarlo la seguridad en esa capa.

Idea Experimental 2

Puedes intentar usar soluciones de prevención de ataques de nivel DNS para tu problema colocando algo como cloudflare en el medio. Use un CNAME y Cloudflare Page Rules para asignar URL a sus funciones en la nube. Esto podría hipotéticamente absorber el impacto. Me gusta esto :

*function1.mydomain.com/* -> https://us-central1-etc-etc-etc.cloudfunctions.net/function1/$2

Ahora si vas a

http://function1.mydomain.com/?something=awesome

incluso puede pasar los parámetros de URL a sus funciones. Una táctica sobre la que he leído en este artículo medio durante el verano cuando necesitaba algo similar.

Finalmente

En un intento por hacer que las preguntas en SOF estén más vinculadas, y ayudar a todos a encontrar respuestas, here's otra pregunta que encontré que es similar en naturaleza. Vincular aquí para que otros puedan encontrarlo también.


Hay una solución para este problema donde puede verificar el punto final https.

Solo los usuarios que pasen un token de ID de Firebase válido como un token de portador en el encabezado Autorización de la solicitud HTTP o en una cookie __session están autorizados para usar la función.

La comprobación del token de identificación se realiza con un middleware ExpressJs que también pasa el token de ID decodificado en el objeto de solicitud Express.

Verifica this código de muestra de firebase.





google-cloud-functions