Os cabeçalhos HTTP são um tipo de metadados enviados com solicitações e respostas da web, as informações que eles fornecem podem ser importantes ou simplesmente informativas. Os cabeçalhos de segurança são um subconjunto dos “cabeçalhos de resposta” que podem ser definidos pelo servidor da web, eles são um dos recursos que podem ajudar a resolver uma série de problemas de segurança. Um dos cabeçalhos de segurança, chamado “X-Frame-Options”, foi projetado para evitar ataques de click-jacking.
Click-Jacking
Click-jacking, também conhecido como “Correção da interface do usuário”, é um problema em que um invasor consegue enganar um usuário para que ele clique em algo que não é o que parece ser. Para sites, isso é feito sobrepondo um site transparente sobre um visível. Nesse tipo de ataque, o usuário pensa que está interagindo com o site visível, mas, na realidade, está afetando involuntariamente o site transparente.
Por exemplo, um invasor pode criar um site que torne provável que um usuário clique em um botão, talvez um botão de reprodução de um vídeo. Em uma camada transparente no topo dessa página da web está uma segunda página da web, como a página da web para excluir sua conta do Facebook com o botão “Excluir conta” posicionado diretamente sobre o botão de reprodução. Nesse cenário, quando o usuário tenta clicar em reproduzir, na verdade, clica no botão para excluir sua conta do Facebook.
O click-jacking depende da capacidade de exibir o site de destino por cima do site fictício, por meio de um processo chamado “Framing”. O enquadramento usa o elemento HTML “iframe”, que pode carregar uma página da web separada inteira dentro de outra página. Ao carregar a página da web de destino em um quadro, posicionando-a com cuidado e tornando-a transparente, a vítima ficará completamente inconsciente de que está sendo induzida a executar uma ação.
Opções de X-Frame
O cabeçalho de resposta HTTP “X-Frame-Options” é um recurso opcional que pode ser definido para sites nos arquivos de configuração do servidor. X-Frame-Options evita que páginas da web sejam carregadas em iframes, o que impede que sejam sobrepostas em outro site. O navegador da vítima realmente aplica o controle de segurança, porque todos os navegadores respeitam o cabeçalho X-Frame-Options e se recusam a carregar qualquer página da Web com o cabeçalho definido em um frame.
O cabeçalho permite que o proprietário do site defina o quão restritiva é a configuração. Existem duas configurações: “X-Frame-Options: DENY” impede que uma página da web protegida seja emoldurada. A outra opção, “X-Frame-Options: SAMEORIGIN”, permite que páginas protegidas sejam enquadradas, apenas se a página que carrega o frame tiver o mesmo nome de domínio. Nesse caso, você pode carregar um frame em seu próprio site, mas ninguém mais pode carregá-lo no site deles.