Las reglas de Firebase no funcionan en la solicitud del servidor, pero funciona en el simulador -- javascript campo con firebase campo con firebase-realtime-database campo con firebase-security camp Relacionados El problema

Firebase rules doesn't work on server request but work on Simulator


0
vote

problema

Español
  {     "rules": {         "verifications": {              // Can only request verification code if it's been one minute than previous request.             "$phoneNumber": {                 ".validate": "!data.exists() || (newData.child('timestamp').val() > data.child('timestamp').val() + 60000)"             }         },         ".read": true,         ".write": true     } }   

Este trabajo de reglas en el simulador de Firebase y el proceso de escritura se rechazó si la marca de tiempo no se encuentra más tarde en 1 minuto. Pero cuando intenté escribir desde el servidor, pasó las reglas y se permitió el proceso de escritura.

El código:

  var data = {     timestamp: 1468664575179 };  var phoneNumber = '+14253452';  firebase.database().ref(`verifications/${phoneNumber}`).set(data, function(err) {     console.log(err); });   

Me pregunto por qué se rechazó el proceso de escritura en el simulador de Firebase pero permitido cuando la solicitud vino del servidor.

Esto no da la razón: Reglas de seguridad de la Firebase Trabajan en simulador, pero no en el código

Original en ingles
{     "rules": {         "verifications": {              // Can only request verification code if it's been one minute than previous request.             "$phoneNumber": {                 ".validate": "!data.exists() || (newData.child('timestamp').val() > data.child('timestamp').val() + 60000)"             }         },         ".read": true,         ".write": true     } } 

This rules work on the Firebase Simulator and the writing process got rejected if the timestamp is not later by 1 minute. But when I tried to write from the server, it passed the rules and the writing process was allowed.

The code:

var data = {     timestamp: 1468664575179 };  var phoneNumber = '+14253452';  firebase.database().ref(`verifications/${phoneNumber}`).set(data, function(err) {     console.log(err); }); 

I wonder why the writing process was rejected on the Firebase Simulator but allowed when the request came from the server.

This doesn't give the reason: Firebase Security Rules work in simulator, but not in code

           
   
   

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

Esto depende de cómo inicializa la conexión.

Si su servidor se está ejecutando bajo una cuenta de servicio sin restricciones, se ejecutará con permisos administrativos y pasará por alto las reglas de seguridad.

  // Initialize the app with a service account, granting admin privileges firebase.initializeApp({   databaseURL: "https://databaseName.firebaseio.com",   serviceAccount: "path/to/serviceAccountCredentials.json" });   

Consulte la sección de autenticación del servidor Firebase DOCS .

La misma sección de los DOCS explica cómo puede anular este comportamiento, al dar un uid6 al proceso del servidor cuando inicializa:

  // Initialize the app with a custom auth variable, limiting the server's access firebase.initializeApp({   databaseURL: "https://databaseName.firebaseio.com",   serviceAccount: "path/to/serviceAccountCredentials.json",   databaseAuthVariableOverride: {     uid: "my-service-worker"   } });   
 

This depends on how you initialize the connection.

If your server is running under an unrestricted service account, it will be running with administrative permissions and bypassing the security rules.

// Initialize the app with a service account, granting admin privileges firebase.initializeApp({   databaseURL: "https://databaseName.firebaseio.com",   serviceAccount: "path/to/serviceAccountCredentials.json" }); 

See the authentication section of the Firebase server docs.

The same section of the docs explains how you can override this behavior, by giving a uid to the server process when you initialize:

// Initialize the app with a custom auth variable, limiting the server's access firebase.initializeApp({   databaseURL: "https://databaseName.firebaseio.com",   serviceAccount: "path/to/serviceAccountCredentials.json",   databaseAuthVariableOverride: {     uid: "my-service-worker"   } }); 
 
 

Relacionados problema

0  ¿Cómo integrar las reglas de seguridad en el cliente de Firestore desde Python's Server Client Library?  ( How to integrate security rules into firestore client from pythons server clien ) 
Estoy tratando de probar mis reglas de seguridad utilizando el emulador de Firestore. Hice un firestore.rules regla de seguridad que no permite todas las le...

0  ¿Cómo funciona esta regla de seguridad contra el fuego?  ( How does this firebase security rule work ) 
Intento saber cómo funciona este código de ejemplo: { "rules": { "users": { "$uid": { ".write": "$uid === auth.uid" } } } }...

0  Firebase permission_denied al ejecutar el programa  ( Firebase permission denied when running program ) 
Tengo un problema que busqué y encontré realmente una respuesta y no funcionó para mí. Tengo una aplicación donde los usuarios pueden publicar imágenes y una ...

1  Reglas de seguridad comodín para claves dinámicas anidadas  ( Security rules wildcard for nested dynamic keys ) 
Soy nuevo en Firogase y estoy confundido con las reglas de seguridad. Tengo una base de datos para usuarios en línea, así: USER_ONLINE_STATUS: ---- cha...

5  Permitir leer en las reglas de Firestore basadas en el valor de la marca de tiempo en el documento  ( Allow read in firestore rules based on timestamp value in document ) 
Quiero crear una regla de Firestore que otorga privaciones de lectura a documentos después de la fecha actual, ha superado un valor de marca de tiempo en el d...

0  Firebase - La regla siempre niega las solicitudes  ( Firebase rule always denies requests ) 
Estoy empezando a restringir el acceso a mi base de datos Firebase. Hasta ahora tengo tres colecciones donde simplemente quiero devolverme verdaderas para fin...

2  Permitiendo el acceso basado en la llave asignada  ( Allowing access based on mapped key ) 
Es un caso de uso simple y simple de la regla de seguridad, pero no puede hacer que funcione. Tengo un documento orgs/fooOrg en MI FIRESTORE (NO RTDB), y co...

0  Firebase HTTPS enlace para cambiar la base de datos en tiempo real  ( Firebase https link to change realtime database ) 
¿Alguien sabe si Firsebase tiene la funcionalidad para enviarle un correo electrónico a un usuario con una pregunta de sí / no que a su vez ofrece dos enlaces...

1  ¿Cómo asegurar la cuenta de Firebase, etc. de las acciones del usuario?  ( How to secure firebase account etc from user actions ) 
Estoy desarrollando un proyecto de hobby usando Firsebase y algunos Nodo.js corriendo en Google App Engine como Backend. Soy un verdadero novato en esta área,...

0  Regla de seguridad de la Firebase para los datos anidados  ( Firebase security rule for nested data ) 
Tengo la siguiente estructura de datos { "users": { "uid": { "priv": { "eid": "eid" } } } } { "entity": { "eid": {...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos