Segurança
Vais confiar-nos a facturação, os dados dos teus hóspedes e a morada dos teus clientes. Esta página diz o que está feito e, no fim, o que falta — porque a segunda lista diz mais sobre nós do que a primeira.
Isolamento
A maioria das plataformas mete todos os clientes nas mesmas tabelas e separa-os por uma coluna. Basta uma consulta escrita à pressa, sem o filtro, para um cliente ver os dados de outro. Aqui essa consulta não tem nada para ver.
O costume
WHERE tenant_id = ?
Todos os clientes nas mesmas tabelas. A separação é um filtro que alguém tem de se lembrar de escrever, em cada consulta, para sempre. Esquecer uma vez chega.
Aqui
USE ajja_tenant_…
Cada cliente na sua própria base de dados. A consulta sem filtro devolve na mesma só o que é teu, porque a ligação já foi apontada ao teu lado antes de a consulta existir.
ajja_tenant_<slug>
DROP DATABASE
quem és · o que subscreves · que módulos
Contas e acessos
Cada uma destas verificações corre no servidor. Nenhuma delas depende do que o navegador decide mostrar ou esconder.
Autenticação em dois passos com a app que já usas. O segredo só passa a valer depois de confirmares um código com ele, para ninguém ficar fechado de fora por ter lido mal o QR. Recebes 8 códigos de recuperação, e tanto eles como o segredo ficam cifrados na base de dados.
Entre a palavra-passe certa e o código do telemóvel há um bilhete temporário que dura cinco minutos. Passado esse tempo volta-se ao início — não fica um meio-login aberto à espera.
O login tem tecto por email e por endereço ao mesmo tempo: cinco tentativas por minuto para o mesmo par, vinte por minuto para o mesmo endereço. Contar só o email deixaria um estranho trancar-te a conta falhando de propósito. A verificação em dois passos, o registo e os formulários públicos de check-in e reserva também têm tecto. A API já autenticada está limitada a 120 pedidos por minuto e por utilizador, não por endereço — dois colegas no mesmo escritório não partilham o orçamento um do outro.
Esconder um item do menu não é segurança. Cada endereço passa por duas verificações separadas — o módulo está activo neste cliente, e o teu papel vê esse módulo — e responde 403 mesmo a quem escreva o endereço à mão.
Um token válido, apontado ao nome de outro cliente, não lê nada. E a resposta é 404, não 403: quem anda a experimentar nomes de clientes não fica a saber quais existem.
O hóspede e o proprietário entram por uma ligação com chave própria, que abre uma coisa só e pode ter validade. Não há conta para lhes roubarem nem palavra-passe para reutilizarem noutro sítio.
Um pedido, do princípio ao fim
Isto é o que acontece entre carregares num botão e aparecer o resultado. A ordem está fixada no arranque da aplicação, não deixada ao acaso de como cada rota foi escrita — porque uma verificação que corre tarde de mais já deixou o pedido começar a trabalhar.
O domínio próprio, o subdomínio ou o cabeçalho do pedido dizem a que cliente pertence. Nome desconhecido, acaba aqui.
Um workspace suspenso não é servido, nem sequer para leitura.
A ligação à base de dados passa a apontar à desse cliente. Tudo o que vier a seguir, incluindo os enganos, só alcança este lado.
O token é verificado. Sem token válido não há passo cinco.
120 por minuto, contados por utilizador. Acima disso o servidor diz que chega.
O utilizador do token e o cliente do pedido têm de ser o mesmo. É esta a junção que impede um token legítimo de ler a casa ao lado.
O módulo tem de estar activo no cliente e visível para o teu papel. Duas verificações, não uma.
Só depois destas sete é que os números no endereço se transformam em registos — e sempre a partir da base de dados que o passo três escolheu.
O que fica registado
Um sistema que não regista nada obriga-te a acreditar. Preferimos que possas verificar.
autor · acção · alvo · antes/depois
As acções administrativas com peso — suspender um cliente, mexer no preço de um plano, desactivar um cupão — guardam quem as fez, sobre o quê, e o valor antes e o valor depois. É escrito a cada uso, de propósito: o que uma máquina faz sozinha, como um pagamento a confirmar-se, não é acção de ninguém e não entra nesta lista.
tenant.impersonated
O suporte consegue entrar na tua conta para resolver um problema. Isso fica registado com nome e hora, e enquanto durar tens uma barra no topo do ecrã a dizer que está a acontecer. Não é silencioso.
tipo · conteúdo · estado · erro
Cada evento de pagamento recebido guarda o tipo, o conteúdo, o estado e a mensagem de erro se falhou. O mesmo evento repetido é reconhecido e não é contado duas vezes.
sem corpo do pedido
Quando algo rebenta, guardamos a mensagem, o ficheiro, a linha e o endereço que falhou. O corpo do pedido não é guardado — para investigar um erro não é preciso ficar com a factura que ias gravar.
Os dados são teus
Uma plataforma que dificulta a saída está a confessar que não te consegue segurar de outra maneira.
um pedido, um ficheiro
sem penalização
O que vem dentro
O que ainda não temos
Nada disto está prometido nem contratado. Está aqui para saberes o que estás a comprar hoje.
Exportar está feito. Apagar os dados de um só indivíduo, mantendo o resto, ainda é trabalho manual — a única eliminação automática é a do cliente inteiro.
Se vais confiar-nos dados de terceiros, tens direito a respostas concretas antes de assinar. Cria a conta e pergunta, ou pergunta primeiro.
14 dias grátis, com o cartão validado sem cobrança. Cancelas antes do 15.º dia após a subscrição e não pagas nada.