Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
¿Cómo puedo establecer reglas de seguridad para Firebase DB para que ningún usuario pueda realizar solicitudes no autorizadas a DB?

Estoy tratando de desarrollar un pago con pago (usando paypal) para obtener el plan pago de un bot de discordia. Luego, cuando el usuario paga, el niño "prem" se establece en verdadero, así:

 paypal.Buttons({ style: { color: 'blue', shape: 'pill' }, createOrder:function (data, actions){ return actions.order.create({ purchase_units: [{ amount:{ value: '1.00' } }] }); }, onApprove:function (data, actions){ return actions.order.capture().then(function (details){ console.log(details) database.ref('server/' + guildId + '/prem').set(true); //here }) } }).render('#paypal-payment-button');

El problema es que mi base de datos en tiempo real no tiene reglas de seguridad (acepta todas las solicitudes):

 { "rules": { ".read": true, ".write": true, } }

Esta es mi estructura de base de datos:

 { "server": { "858941532694118431": { "prem": true, //premium plan activated "settings": { "error": "on", "warnings": "on" } } } }

Como mis reglas dan acceso a todos, cada usuario podría escribir esto en la consola para activar el premium sin pagar:

 database.ref('server/' + serverId + '/prem').set(true);

¿Cómo podría configurar mis reglas de seguridad para que ningún usuario pueda modificar a ese niño pero solo el sistema automático puede hacerlo? ¿Hay una manera?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No debería permitir que los usuarios actualicen el prem en primer lugar. Incluso si permite que los usuarios actualicen su propia membresía, aún pueden convertirla en true sin el pago de Paypal.

En su lugar, intente usar Webhooks de Paypal que pueden activar una función HTTP Cloud cada vez que se recibe un pago y cambiar el estado premium del usuario desde la función Cloud después de validar el pago.

Sin embargo, incluso si quisiera escribir en la base de datos directamente, el ID del servidor no parece ser el UID predeterminado de Firebase Auth. Si ese no es el UID del usuario, será difícil implementar reglas para él.

 { "rules": { "server": { "$uid": { ".write": "$uid === auth.uid" } } } }

Estas reglas permitirán que un usuario con UID 1234 edite /server/1234/ solo la ruta.


Dado que la ID es la ID del gremio de Discord, será mejor usar un webhook. Puede usar Firebase Cloud Function y configurar su URL como URL de entrega de webhook en Paypal. El webhook debe contener información adicional sobre la transacción e incluso puede incluir algunos metadatos, como la identificación del gremio, si es necesario. Valide el pago y actualice su base de datos según sea necesario.

Asegúrese de que las reglas estén configuradas en ".write": false para que ningún usuario pueda actualizar ese estado directamente.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda