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.

15
Coisas que provamos
01
Coisas que faltam

Isolamento

A fronteira é a base de dados, não uma condição no código.

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>

Uma base de dados por cliente
Chama-se ajja_tenant_<o-teu-nome> e tem só as tuas 140 tabelas. A ligação é trocada a cada pedido, para a que te pertence.

DROP DATABASE

Apagar é apagar
Quando um cliente sai, a base de dados dele cai inteira. Não fica um registo marcado como apagado à espera de alguém reparar.

quem és · o que subscreves · que módulos

A central só sabe o mínimo
A base de dados central guarda quem és, o que subscreves e que módulos tens. O trabalho do dia-a-dia nunca lá passa.

Contas e acessos

Quem entra, como entra, e até onde vai.

Cada uma destas verificações corre no servidor. Nenhuma delas depende do que o navegador decide mostrar ou esconder.

  1. 01 TOTP · 8 códigos · segredo cifrado

    Dois passos, se quiseres

    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.

  2. 02 5 minutos

    O segundo passo tem prazo

    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.

  3. 03 login 5/min · 2FA 10/min · registo 3/hora · API 120/min

    Tentativas com limite

    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.

  4. 04 módulo + papel · 403

    Permissões verificadas no servidor

    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.

  5. 05 404, não 403

    Um token só serve na casa dele

    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.

  6. 06 um recurso por ligação

    Portais sem conta

    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

Sete perguntas antes de alguém ver uma linha tua.

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.

  1. 01 404

    De quem é esta casa?

    O domínio próprio, o subdomínio ou o cabeçalho do pedido dizem a que cliente pertence. Nome desconhecido, acaba aqui.

  2. 02 402

    A subscrição está activa?

    Um workspace suspenso não é servido, nem sequer para leitura.

  3. 03 →

    Apontar a ligação

    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.

  4. 04 401

    Quem está a pedir?

    O token é verificado. Sem token válido não há passo cinco.

  5. 05 429

    Quantos pedidos já fizeste?

    120 por minuto, contados por utilizador. Acima disso o servidor diz que chega.

  6. 06 404

    Pertences a este cliente?

    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.

  7. 07 403

    Podes ver este módulo?

    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

Quem fez o quê, incluindo nós.

Um sistema que não regista nada obriga-te a acreditar. Preferimos que possas verificar.

Os dados são teus

A porta de saída está aberta e assinalada.

Uma plataforma que dificulta a saída está a confessar que não te consegue segurar de outra maneira.

um pedido, um ficheiro

Exportação completa
Um pedido devolve tudo o que é teu, da base central e da tua base de dados, com a data em que foi tirado. As palavras-passe da tua equipa ficam de fora, como devem.

sem penalização

Sem taxa de saída
Cancelas quando quiseres. O que exportaste é teu e lê-se em qualquer ferramenta — não é um formato nosso que só nós abrimos.

O que vem dentro

  • Clientes
  • Projectos
  • Facturas
  • Marcações
  • Galerias
  • Fotografias
  • Reservas
  • Ordens de serviço
  • Artigos
  • Rotas
  • Documentos
  • Propostas
  • Equipa
  • Subscrição
  • Pedidos de suporte

O que ainda não temos

A lista curta, antes que a descubras sozinho.

Nada disto está prometido nem contratado. Está aqui para saberes o que estás a comprar hoje.

Perguntas que esta página não respondeu?

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.