Para se defender contra ataques, um desenvolvedor precisa mitigar vulnerabilidades e adicionar recursos de segurança a um aplicativo. Felizmente, o navegador oferece muitos recursos de segurança na Web. Alguns estão disponíveis para os desenvolvedores e outros são ativados por padrão para proteger os usuários.
A ideia de uma "sandbox"
Os navegadores modernos da Web são desenvolvidos com base na ideia de "sandbox". Um sandbox é um mecanismo de segurança usado para executar um aplicativo em um ambiente restrito. Assim como a sandbox física de um playground em que as crianças podem criar tudo 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 pode ter o acesso restrito a um arquivo JSON externo. Isso ocorre devido a um recurso de sandbox chamado de mesma origem
Por que uma sandbox é necessária?
Todos os dias, usuários da Web fazem o download de um código arbitrário e o executam no computador ou smartphone várias vezes. Se alguém disser "Ei! Faça o download e execute este aplicativo!", você pode parar para pensar se esse aplicativo vem de uma fonte confiável, ler sobre o fornecedor do aplicativo ou verificar as avaliações com atenção. E quando alguém envia um URL para você dizendo "confira esta postagem do blog"? Você provavelmente clicaria nela sem fazer perguntas como "Que tipo de JavaScript este site transferirá?".
O sandbox do navegador é o principal recurso que torna a navegação na Web mais fácil, tornando-a mais segura para executar códigos arbitrários.
Segurança incorporada ao design
Se o navegador coloca cada aplicativo da Web no sandbox, precisamos nos preocupar com a segurança? Com certeza.
Em primeiro lugar, os recursos da sandbox não são o escudo perfeito. Mesmo que os engenheiros de navegador trabalhem duro, os navegadores podem ter vulnerabilidades e os invasores estão sempre tentando burlar o sandbox (como acontece com o Spectre Attack).
O sandbox às vezes 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). No entanto, se isso não for feito com cuidado, você poderá expor um recurso a todas as outras pessoas na Web, basicamente desfazendo o sandbox.
Conclusão
Uma experiência segura na Web só pode ser alcançada se a segurança estiver incorporada no design do seu aplicativo, e um design forte começar com a compreensão dos recursos existentes. Os próximos dois guias abordam o CORS e a política de mesma origem em detalhes.