O teu site pode ser incorporado por outros?
O clickjacking esconde a tua página real numa frame invisível noutro site, para que o visitante clique nos teus botões sem saber. Cola um URL para ver se outros sites a podem incorporar numa frame e se isso põe os teus visitantes em risco.
- X-Frame-Options
- CSP frame-ancestors
Este é o URL carregado numa frame da nossa página, tal como um atacante faria. Se consegues ver a página, qualquer site pode fazer o mesmo. Se a frame mostrar um erro como "refused to connect", o teu browser bloqueou-a.
Este URL usa http simples, que os browsers não carregam dentro de uma página https, por isso a frame fica vazia em qualquer caso. Segue o veredicto dos cabeçalhos acima.
Como corrigir
Envia um Content-Security-Policy com frame-ancestors e ainda X-Frame-Options para browsers mais antigos. Adiciona ambos no servidor web à frente do teu site.
nginx
add_header Content-Security-Policy "frame-ancestors 'self'" always;
add_header X-Frame-Options "SAMEORIGIN" always;
Apache
Header always set Content-Security-Policy "frame-ancestors 'self'"
Header always set X-Frame-Options "SAMEORIGIN"
Usas Odoo? Usa 'self' em vez de 'none': o editor do website mostra as tuas próprias páginas numa frame no mesmo domínio. A CICDoo ativa estes cabeçalhos por predefinição em todas as instâncias que implementa.
Como funciona o ataque
A tua página, os cliques de outros
Uma frame invisível
O atacante carrega a tua página real num iframe transparente e coloca-a sobre um isco, como um botão de prémio ou um leitor de vídeo.
Um clique real
O visitante já tem sessão iniciada no teu site. O clique cai na tua página: aprovar um pagamento, alterar um email ou conceder acesso.
Um cabeçalho trava o ataque
frame-ancestors ou X-Frame-Options indica ao browser que sites te podem incorporar numa frame. Sem eles, o browser permite-o a qualquer um.
FAQ
Perguntas, respondidas
O que verifica este teste?
Pedimos o URL a partir do nosso servidor e lemos dois cabeçalhos de resposta: X-Frame-Options e a diretiva frame-ancestors do Content-Security-Policy. A página também carrega o URL numa frame para veres o resultado no teu próprio browser.
Que cabeçalho devo usar?
frame-ancestors é o padrão moderno e prevalece sempre que está presente. Mantém também X-Frame-Options para browsers mais antigos. Usa 'self' para permitir apenas o teu domínio, ou 'none' para bloquear qualquer frame.
Porque é que a frame aparece em branco?
Alguns sites bloqueiam a incorporação, mostram uma página em branco a visitantes desconhecidos ou usam http simples, que os browsers recusam carregar dentro de uma página https. O veredicto dos cabeçalhos não depende do teu browser.
O meu site é vulnerável se puder ser incorporado numa frame?
Não necessariamente. O clickjacking precisa de uma página com uma ação relevante, como um pagamento ou uma alteração de definições, de um visitante com sessão iniciada e de um cookie de sessão que o browser envie dentro de uma frame noutro site. Os browsers atuais retêm os cookies sem SameSite=None, por isso uma página incorporada costuma carregar sem sessão. Mesmo assim, vale a pena adicionar os cabeçalhos: fecham a porta de vez e as auditorias de segurança verificam-nos.
O ALLOW-FROM ainda é suportado?
Não. Os browsers atuais ignoram X-Frame-Options ALLOW-FROM. Para permitir sites parceiros específicos, indica-os antes em frame-ancestors.
Guardam o URL?
Guardamos apenas um registo do pedido para limitar a frequência, não o URL nem o resultado.
Cabeçalhos de segurança que nunca precisas de lembrar.
A CICDoo executa o Odoo em servidores que são teus, com proteção contra incorporação em frames, SSL, início de sessão com dois fatores, cópias de segurança e uma análise de segurança diária de cada instância.
Sem taxas por utilizador. Os teus servidores continuam a ser teus.