Solta

Atualizado em

Dois domínios, e por que um só seria mais barato

Por

O Solta está em dois domínios e paga por isso todos os dias. Um só seria mais simples, mais barato e mais amigável, e também significaria que qualquer site que qualquer pessoa publicasse poderia ler a sua sessão.

Cole uma página e veja em que domínio ela abre

Blog · Publicado originalmente em inglês em .

Um site publicado é um arquivo que um estranho escreveu. Ele roda num navegador, o que quer dizer que roda JavaScript, o que quer dizer que pode fazer tudo o que o navegador deixa fazer a origem de onde ele é servido. Essa última parte da frase é o projeto inteiro.

Quanto vale uma origem

Os navegadores não protegem os arquivos uns dos outros. Protegem as origens umas das outras: o esquema, o host e a porta, juntos. Os cookies, o armazenamento local e a possibilidade de ler a resposta de outro site param todos nessa fronteira, e dentro dela não há fronteira nenhuma.

Então, se um site que alguém publicou fosse servido do mesmo host do aplicativo em que as pessoas entram com a conta, ele ficaria dentro da origem do aplicativo. Não perto dela. Dentro. Todo cookie que a sessão usa iria junto nas requisições dele, e ele mesmo poderia fazer essas requisições.

O caminho de limpar o arquivo, em resumo

A alternativa é tirar do arquivo o que é perigoso. Tentamos querer isso, porque é a versão em que tudo fica num domínio só e o produto inteiro é menor.

Isso não sobrevive ao contato com o trabalho de verdade. Os arquivos que as pessoas publicam são painéis, calculadoras e pequenos aplicativos. O script é a coisa. Tirá-lo deixa uma captura de tela. E limpar HTML bem o bastante para servir de fronteira de segurança é um problema com um longo histórico público de gente perdendo.

O que a separação custa

Dois certificados, um deles curinga (wildcard), que não pode ser emitido provando o controle de um único nome de host e por isso precisa de um token de DNS. Dois conjuntos de variáveis de ambiente. Toda conexão entre as duas metades é entre origens diferentes, então tudo o que precisa atravessar leva um token assinado, de vida curta e com uma só função.

Também custa uma pequena dose permanente de confusão: o aplicativo está num nome e os sites que ele publica estão em outro, e ninguém chega esperando isso.

O que ela traz em troca

Um site publicado pode ser tão hostil quanto o autor quiser e mesmo assim não alcançar nada. Ele não pode ler os seus cookies, porque não são cookies dele. Não pode chamar a API como se fosse você, porque o navegador não envia as suas credenciais para ele. Não pode reescrever a página em volta, porque não há site em volta: o frame em que ele vive é outra origem.

E isso quer dizer que podemos dizer sim por padrão. O que é enviado não precisa ser inspecionado em busca de hostilidade antes de poder rodar, porque rodar não é a parte perigosa. O lugar onde roda é.

Onde fica o limite, na ajuda.

Perguntas

Por que o Solta usa dois domínios?

Porque um site publicado é um arquivo que um estranho escreveu, e ele pode fazer tudo o que o navegador deixa fazer a origem de onde é servido. No mesmo host do aplicativo, ele ficaria dentro da origem do aplicativo, junto com a sua sessão.

Um site publicado pode ler os meus cookies do Solta?

Não. Ele é servido de outra origem, então os seus cookies não são dele, e o navegador não envia as suas credenciais para ele. Ele também não pode chamar a API como se fosse você.

Por que não tirar dos arquivos o que é perigoso?

Porque os arquivos que as pessoas publicam são painéis, calculadoras e pequenos aplicativos, e o script é a coisa. Tirá-lo deixa uma captura de tela. E limpar HTML bem o bastante para servir de fronteira de segurança tem um longo histórico público de gente perdendo.

O que custam os dois domínios?

Dois certificados, um deles curinga, que precisa de um token de DNS. Dois conjuntos de variáveis de ambiente. E tudo o que passa de uma metade para a outra leva um token assinado, de vida curta e com uma só função.

Um site precisa ser inspecionado antes de poder rodar?

Não em busca de hostilidade. Rodar não é a parte perigosa, o lugar onde roda é. Por isso o Solta pode dizer sim por padrão.

Publique direto do seu chat de IA

Conecte o Solta ao Claude ou ao ChatGPT e peça: o site sai com um link, sem copiar código.