Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

169
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda