The Codest
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Indústrias
    • Fintech e Banca
    • E-commerce
    • Adtech
    • Tecnologia da saúde
    • Fabrico
    • Logística
    • Automóvel
    • IOT
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
  • Sobre nós
  • Serviços
    • Desenvolvimento de software
      • Desenvolvimento de front-end
      • Desenvolvimento backend
    • Staff Augmentation
      • Programadores Frontend
      • Programadores de back-end
      • Engenheiros de dados
      • Engenheiros de nuvem
      • Engenheiros de GQ
      • Outros
    • Aconselhamento
      • Auditoria e consultoria
  • Valor para
    • CEO
    • CTO
    • Gestor de entregas
  • A nossa equipa
  • Case Studies
  • Saber como
    • Blogue
    • Encontros
    • Webinars
    • Recursos
Carreiras Entrar em contacto
Seta para trás VOLTAR
2021-04-28
Desenvolvimento de software

Segurança das aplicações Web. Vulnerabilidade Target="_blank

Lukasz Kolko

A utilização de aplicações Web tornou-se um lugar-comum para todas as sociedades. Lidamos com elas todos os dias. Podemos dizer que nos rodeiam. Utilizamo-las no trabalho, para nos divertirmos e como ferramentas de comunicação com os outros. Muitas vezes, como utilizadores e como programadores, não nos apercebemos de quantas vulnerabilidades de segurança são descobertas todos os dias nessas aplicações.

Recentemente, escrevemos sobre segurança das aplicações web no que respeita à vulnerabilidade XSS. Desta vez, queremos chamar a vossa atenção para outro perigo.

A vulnerabilidade discutida neste documento foi com nós há muito tempo e, devido à sua simplicidade, é frequentemente subestimado ou mesmo desconhecido por alguns criadores de aplicações web.

Quase todas as aplicações Web contêm ligações que, quando clicadas, abrem num novo separador para não fechar o separador com a página original. Este é um comportamento preferido porque os criadores querem que o utilizador passe o máximo de tempo possível na aplicação.

Um ataque que explora esta vulnerabilidade é o chamado "reverse tabnabbing". Trata-se de um ataque em que uma página ligada a partir da página de destino é capaz de substituir essa página, por exemplo, por um sítio de phishing.

Cenário de ataque

  1. Suponhamos que a vítima utiliza o Facebook, que é conhecido por abrir ligações através de target="_blank",
  2. Criar uma página viral falsa,
  3. Criar um sítio Web de phishing que se pareça com a página de início de sessão do Facebook,
  4. Colocar o seguinte código na página viral, por exemplo, através de uma vulnerabilidade XSS encontrada
    window.opener.location = 'https://phishing-website/facebook.com';
  5. A vítima clica na ligação no Facebook para a página viral,
  6. A página viral redirecciona o separador do Facebook para o site de phishing, pedindo ao utilizador para iniciar sessão novamente.

Assim, podemos alterar o separador principal da página de destino infetada através de um objeto de janela da API Web. Normalmente, um ataque envolve a utilização de várias vulnerabilidades descobertas e esquemas de phishing em paralelo.

O problema

Quando abrimos um novo separador no browser utilizando uma ligação com o target="_blank" temos acesso ao nosso "referenciador" a partir do novo separador. Mais especificamente, ao atributo abridor propriedade do Janela que devolve uma referência à janela que o abriu, a nossa página-mãe.

Isto deve-se ao comportamento do Janela.open() função. Com acesso a este atributo, podemos facilmente substituir a nossa página-mãe. Note que alguns navegadores modernos podem fazer com que o janela.abridor função no separador de destino como nulo para evitar este comportamento.

Exemplo de código

<code> <a href="https://github.com" target="_blank">Ir para o GitHub - ligação infetada</a>
const
 se (link)
   link[0].onclick = () => {
     if (window) window.opener.location = 'https://stackoverflow.com'
   }

Acima pode ver a ligação infetada que, originalmente, abre um novo separador com uma página do GitHub mas, entretanto, altera a nossa página "mãe" para o site Stackoverflow.

Exemplo em direto

1. Ligações HTML

Adicionar rel="noopener noreferrer" para o <a> tag.

O rel define a relação entre um recurso ligado e o documento atual.

noopener diz ao browser para navegar para o destino sem conceder acesso ao pai que o abriu. Separador de destino Janela.abridor será nulo.

noreferrer impede que o navegador, ao navegar para o destino, envie para o pai o endereço ou qualquer outro valor como referenciador através do referenciador Cabeçalho HTTP. Note-se que o nome deste cabeçalho HTTP está intencionalmente mal escrito como "referrer".

2. JavaScript ligações

Para o JavaScript Janela.abrir é possível adicionar os valores noopener e noreferrer no windowFeatures do parâmetro Janela.abrir mas os diferentes browsers podem responder de forma diferente, pelo que se recomenda fazer Janela.abridor como nulo depois de utilizar Janela.open() função.

Ler mais:

API Rails e CORS. Uma pitada de consciência

Estratégias de obtenção de dados no NextJS

7 razões pelas quais a sua loja virtual precisa do Magento

Se achou este artigo interessante, siga o Lukasz no Github: https://github.com/twistezo

Artigos relacionados

Ilustração de uma aplicação de cuidados de saúde para smartphone com um ícone de coração e um gráfico de saúde em ascensão, com o logótipo The Codest, representando soluções digitais de saúde e HealthTech.
Desenvolvimento de software

Softwares para o setor de saúde: Tipos, casos de uso

As ferramentas em que as organizações de cuidados de saúde confiam atualmente não se assemelham em nada às fichas de papel de há décadas atrás. O software de cuidados de saúde apoia agora os sistemas de saúde, os cuidados aos doentes e a prestação de cuidados de saúde modernos em...

OCODEST
Ilustração abstrata de um gráfico de barras em declínio com uma seta ascendente e uma moeda de ouro que simboliza a eficiência ou a poupança de custos. O logótipo The Codest aparece no canto superior esquerdo com o slogan "In Code We Trust" sobre um fundo cinzento claro
Desenvolvimento de software

Como dimensionar a sua equipa de desenvolvimento sem perder a qualidade do produto

Aumentar a sua equipa de desenvolvimento? Saiba como crescer sem sacrificar a qualidade do produto. Este guia cobre sinais de que é hora de escalar, estrutura da equipe, contratação, liderança e ferramentas - além de como o The Codest pode...

OCODEST
Desenvolvimento de software

Construir aplicações Web preparadas para o futuro: ideias da equipa de especialistas do The Codest

Descubra como o The Codest se destaca na criação de aplicações web escaláveis e interactivas com tecnologias de ponta, proporcionando experiências de utilizador perfeitas em todas as plataformas. Saiba como a nossa experiência impulsiona a transformação digital e o negócio...

OCODEST
Desenvolvimento de software

As 10 principais empresas de desenvolvimento de software sediadas na Letónia

Saiba mais sobre as principais empresas de desenvolvimento de software da Letónia e as suas soluções inovadoras no nosso último artigo. Descubra como estes líderes tecnológicos podem ajudar a elevar o seu negócio.

thecodest
Soluções para empresas e escalas

Fundamentos do desenvolvimento de software Java: Um Guia para Terceirizar com Sucesso

Explore este guia essencial sobre o desenvolvimento de software Java outsourcing com sucesso para aumentar a eficiência, aceder a conhecimentos especializados e impulsionar o sucesso do projeto com The Codest.

thecodest

Subscreva a nossa base de conhecimentos e mantenha-se atualizado sobre os conhecimentos do sector das TI.

    Sobre nós

    The Codest - Empresa internacional de desenvolvimento de software com centros tecnológicos na Polónia.

    Reino Unido - Sede

    • Office 303B, 182-184 High Street North E6 2JA
      Londres, Inglaterra

    Polónia - Pólos tecnológicos locais

    • Parque de escritórios Fabryczna, Aleja
      Pokoju 18, 31-564 Cracóvia
    • Embaixada do Cérebro, Konstruktorska
      11, 02-673 Varsóvia, Polónia

      The Codest

    • Início
    • Sobre nós
    • Serviços
    • Case Studies
    • Saber como
    • Carreiras
    • Dicionário

      Serviços

    • Aconselhamento
    • Desenvolvimento de software
    • Desenvolvimento backend
    • Desenvolvimento de front-end
    • Staff Augmentation
    • Programadores de back-end
    • Engenheiros de nuvem
    • Engenheiros de dados
    • Outros
    • Engenheiros de GQ

      Recursos

    • Factos e mitos sobre a cooperação com um parceiro externo de desenvolvimento de software
    • Dos EUA para a Europa: Porque é que as empresas americanas decidem mudar-se para a Europa?
    • Comparação dos centros de desenvolvimento da Tech Offshore: Tech Offshore Europa (Polónia), ASEAN (Filipinas), Eurásia (Turquia)
    • Quais são os principais desafios dos CTOs e dos CIOs?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Direitos de autor © 2026 por The Codest. Todos os direitos reservados.

    pt_PTPortuguese
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek cs_CZCzech pt_PTPortuguese