Sandbox do navegador

Mariko Kosaka

Para se defender de ataques, um desenvolvedor precisa mitigar vulnerabilidades e adicionar recursos de segurança a um aplicativo. Felizmente, na Web, o navegador oferece muitos recursos de segurança. Algumas estão disponíveis para os desenvolvedores ativarem, e outras são ativadas por padrão para proteger os usuários.

A ideia de uma "sandbox"

navegador como um sandbox
Figura: navegador como sandbox

Os navegadores da Web modernos são criados com base na ideia de uma "sandbox". Um sandbox é um mecanismo de segurança usado para executar um aplicativo em um ambiente restrito. Assim como a caixa de areia física em um playground, em que as crianças podem criar o que quiserem dentro do limite sem fazer bagunça em outro lugar, o código do aplicativo tem a liberdade de ser executado em um ambiente restrito. Por exemplo, o JavaScript pode adicionar e modificar elementos na página, mas talvez não tenha acesso a um arquivo JSON externo. Isso ocorre devido a um recurso de sandbox chamado "mesma origem".

Por que uma sandbox é necessária?

Todos os dias, os usuários da Web fazem o download e executam código arbitrário várias vezes no computador ou smartphone. Se alguém disser "Olá! Baixe e execute este aplicativo", talvez você pare para pensar se o aplicativo vem de uma fonte confiável, leia sobre o fornecedor ou verifique as avaliações com cuidado. E quando alguém envia um URL dizendo "confira esta postagem do blog"? Você provavelmente clicaria nele sem fazer perguntas como "Que tipo de JavaScript este site vai baixar?".

O sandbox do navegador é o principal recurso que torna a navegação na Web mais fácil, porque torna mais seguro executar código arbitrário.

Torne-o seguro desde a concepção

Se o navegador estiver colocando cada aplicativo da Web em sandbox, precisamos nos preocupar com a segurança? Com certeza.

Primeiro, os recursos de sandbox não são a proteção perfeita. Embora os engenheiros de navegadores trabalhem muito, os navegadores podem ter vulnerabilidades, e os invasores sempre tentam burlar o sandbox (como com o ataque Spectre).

Às vezes, o sandbox pode atrapalhar a criação de uma ótima experiência na Web. Por exemplo, um navegador pode bloquear uma solicitação de busca para uma imagem hospedada em um domínio diferente. É possível compartilhar recursos em domínios diferentes ativando o compartilhamento de recursos entre origens (CORS, na sigla em inglês), mas se isso não for feito com cuidado, você poderá expor um recurso a todos na Web, desfazendo essencialmente o sandbox.

Conclusão

Uma experiência da Web segura só pode ser alcançada se a segurança estiver integrada ao design do aplicativo, e um design eficiente começa com a compreensão dos recursos existentes. Os dois guias a seguir abordam o CORS e a política de mesma origem em detalhes.