Solta

Atualizado a

Dois domínios, e porque é 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 publicado por qualquer pessoa poderia ler a sua sessão.

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

Blog · Publicado originalmente em inglês a .

Um site publicado é um ficheiro que um desconhecido escreveu. Corre num navegador, o que quer dizer que corre JavaScript, o que quer dizer que pode fazer tudo o que o navegador deixa fazer à origem a partir da qual é servido. Essa última parte da frase é o desenho inteiro.

Quanto vale uma origem

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

Por isso, se um site que alguém publicou fosse servido a partir do mesmo host da aplicação onde as pessoas iniciam sessão, ficaria dentro da origem da aplicação. Não perto dela. Dentro. Todos os cookies que a sessão usa seguiriam com os pedidos dele, e ele próprio poderia fazer esses pedidos.

O caminho de limpar o ficheiro, em resumo

A alternativa é retirar do ficheiro o que é perigoso. Tentámos querer isto, porque é a versão em que tudo vive num só domínio e o produto inteiro é mais pequeno.

Não sobrevive ao contacto com o trabalho real. Os ficheiros que as pessoas publicam são painéis, calculadoras e pequenas aplicações. O script é a coisa. Retirá-lo deixa uma captura de ecrã. E limpar HTML suficientemente bem para servir de fronteira de segurança é um problema com um longo historial público de quem perdeu.

O que a separação custa

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

Também custa uma pequena dose permanente de confusão: a aplicação está num nome e os sites que publica estão noutro, e ninguém chega à espera disso.

O que ganhamos com isso

Um site publicado pode ser tão hostil quanto o autor quiser e, mesmo assim, não chegar a nada. Não pode ler os seus cookies, porque não são os cookies dele. Não pode chamar a API em seu nome, porque o navegador não lhe envia as suas credenciais. Não pode reescrever a página à volta dele, porque não há nenhum site à volta: o frame onde vive é outra origem.

E significa que podemos dizer que sim por predefinição. O que é enviado não tem de ser inspecionado à procura de hostilidade antes de poder correr, porque correr não é a parte perigosa. O lugar onde corre é.

Onde fica o limite, na ajuda.

Perguntas

Porque é que o Solta usa dois domínios?

Porque um site publicado é um ficheiro que um desconhecido escreveu, e pode fazer tudo o que o navegador deixa fazer à origem a partir da qual é servido. No mesmo host da aplicação, ficaria dentro da origem da aplicação, junto da sua sessão.

Um site publicado pode ler os meus cookies do Solta?

Não. É servido a partir de outra origem, por isso os seus cookies não são dele, e o navegador não lhe envia as suas credenciais. Também não pode chamar a API em seu nome.

Porque não retirar dos ficheiros o que é perigoso?

Porque os ficheiros que as pessoas publicam são painéis, calculadoras e pequenas aplicações, e o script é a coisa. Retirá-lo deixa uma captura de ecrã. E limpar HTML suficientemente bem para servir de fronteira de segurança tem um longo historial público de quem perdeu.

O que custam os dois domínios?

Dois certificados, um deles wildcard, 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 tem de ser inspecionado antes de poder correr?

Não à procura de hostilidade. Correr não é a parte perigosa, o lugar onde corre é. Por isso o Solta pode dizer que sim por predefinição.

Publique diretamente a partir do seu chat de IA

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