Pular para o conteúdo

Segurança

O AppFly escreve e executa código por você. Aqui está exatamente o que isso significa para os seus dados: o limite de isolamento, o que é criptografado, o que nunca é coletado e o que acontece com tudo quando você sai.

Um app não consegue acessar outro

Cada app recebe seu próprio banco Postgres e seu próprio papel de acesso, criado com REVOKE CONNECT … FROM PUBLIC. O isolamento é uma propriedade do banco de dados, não do código da aplicação: uma consulta escrita por um agente em um app não alcança os dados de outro, nem se tentar.

Cada app também roda no próprio contêiner, com seu próprio espaço de trabalho em disco. Só o servidor é compartilhado.

Segredos são criptografados e nunca exibidos por inteiro

Chaves de provedores, tokens e variáveis de ambiente são criptografados em repouso com AES-256-GCM. Uma página só recebe uma dica mascarada — os quatro últimos caracteres —, então nem uma tela nem um log de build conseguem vazar uma credencial completa.

As chaves são gravadas no próprio .env do app gerado, dentro do seu espaço de trabalho, o único lugar que pode lê-las. Nós emitimos uma única variável de ambiente: a URL do banco de dados do app, porque somos nós que o provisionamos.

Os dados dos seus clientes não são nossos

O AppFly guarda contas, domínios de loja, prompts e código gerado. Ele nunca lê os clientes, os pedidos nem os dados pessoais da sua loja, e as permissões que pedimos à Shopify não os incluem.

A Shopify exige que todo app responda a três webhooks de conformidade, e respondemos aos três. Os dois sobre dados de clientes são confirmados com um registro de que verificamos e não tínhamos nada — a resposta que um lojista pode precisar que tenhamos arquivada.

Excluir é o padrão, não um chamado de suporte

Excluir um app remove o contêiner, o banco de dados, os arquivos, a publicação, o registro DNS e os acessos. A linha no banco é apagada por último, para que uma exclusão que falhe no meio seja repetida em vez de deixar algo órfão rodando.

Desinstalar pela Shopify apaga tudo o que pertence à sua loja em até 48 horas. Uma tarefa agendada roda a cada cinco minutos para terminar o que o desinstalador não conseguiu, então uma exclusão interrompida nunca volta à vida como app ativo.

Sair revoga a sessão no servidor. Encerrar sua conta apaga tudo o que a Política de Privacidade (em inglês) diz.

Os limites que mantemos

Toda requisição a uma página com login é autenticada, e as rotas de API respondem a uma chamada não autenticada com um 401 legível em vez de uma página de login em HTML.

Os webhooks de cobrança são assinados e verificados contra o corpo original da requisição. Uma publicação sem segredo de webhook configurado retorna 404 nesse endpoint — sem assinatura é sem autenticação, não aberto — e uma assinatura inválida é um 401.

O console do operador fica atrás de senha e de um cookie assinado, e suas operações privilegiadas são uma lista fixa de funções, sem shell genérico. Ele não é acessível pelo site público, e o robots.txt o bloqueia.

Como reportar uma vulnerabilidade

Envie para [email protected] com detalhes suficientes para reproduzir e uma ideia do impacto. Vamos confirmar o recebimento e contar o que estamos fazendo. Dê um prazo razoável antes de divulgar publicamente e não teste contra dados de outros clientes.

Para qualquer coisa que não seja de segurança, o endereço certo é [email protected].