window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Bezpieczeństwo aplikacji internetowych. Target="_blank" podatność - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2021-04-28
Software Development

Bezpieczeństwo aplikacji internetowych. Target="_blank" podatność na ataki

Łukasz Kolko

Korzystanie z aplikacji internetowych stało się powszechne dla każdego społeczeństwa. Mamy z nimi do czynienia każdego dnia. Można powiedzieć, że nas otaczają. Używamy ich w pracy, dla rozrywki i jako narzędzi do komunikowania się z innymi. Często, jako użytkownicy i programiści, nie zdajemy sobie sprawy, jak wiele luk w zabezpieczeniach jest odkrywanych każdego dnia w takich aplikacjach.

Niedawno pisaliśmy o bezpieczeństwo aplikacji internetowych, jeśli chodzi o luki XSS. Tym razem chcemy zwrócić uwagę na inne niebezpieczeństwo.

Podatność omawiana w tym artykule towarzyszy nam od dawna, a ze względu na swoją prostotę jest często niedoceniana lub nawet nieznana przez niektórych. programiści aplikacji internetowych.

Prawie każda aplikacja internetowa zawiera linki, które po kliknięciu otwierają się w nowej karcie, aby nie zamykać karty z oryginalną stroną. Jest to preferowane zachowanie, ponieważ twórcy chcą, aby użytkownik spędził jak najwięcej czasu w aplikacji.

Atakiem wykorzystującym tę lukę jest tak zwany "odwrotny tabnabbing". Jest to atak, w którym strona połączona ze stroną docelową jest w stanie zastąpić tę stronę, na przykład, witryną phishingową.

Scenariusz ataku

  1. Załóżmy, że ofiara korzysta z Facebooka, który jest znany z otwierania linków przez target="_blank",
  2. Utwórz fałszywą stronę wirusową,
  3. Stworzenie strony phishingowej, która wygląda jak strona logowania na Facebooku,
  4. Umieść poniżej kod na stronie wirusowej, np. poprzez znalezioną lukę XSS
    window.opener.location = 'https://phishing-website/facebook.com';
  5. Ofiara klika link na Facebooku do strony z wirusem,
  6. Zawirusowana strona przekierowuje kartę Facebooka na stronę phishingową z prośbą o ponowne zalogowanie się.

Możemy więc zmienić kartę nadrzędną z zainfekowanej strony docelowej za pomocą obiektu okna z Web API. Zazwyczaj atak polega na równoległym wykorzystaniu kilku wykrytych luk i oszustw phishingowych.

Problem

Kiedy otwieramy nową kartę w przeglądarce za pomocą linku z rozszerzeniem target="_blank" mamy dostęp do naszego "referrera" z nowej zakładki. A dokładniej, do atrybutu otwieracz właściwość Okno który zwraca odwołanie do okna, które go otworzyło, czyli naszej strony nadrzędnej.

Jest to spowodowane zachowaniem Window.open() function. Mając dostęp do tego atrybutu, możemy łatwo zastąpić naszą stronę nadrzędną. Należy pamiętać, że niektóre nowoczesne przeglądarki mogą window.opener w zakładce docelowej jako null aby zapobiec takiemu zachowaniu.

Przykładowy kod

<code> <a href="https://github.com" target="_blank">Przejdź do GitHub - zainfekowany link</a>
const
 if (link)
   link[0].onclick = () => {
     if (window) window.opener.location = 'https://stackoverflow.com'
   }

Powyżej widać zainfekowany link, który początkowo otwiera nową kartę ze stroną GitHub, ale w międzyczasie zmienia naszą stronę "nadrzędną" na stronę Stackoverflow.

Przykład na żywo

1. Łącza HTML

Dodaj rel="noopener noreferrer" do <a> tag.

The rel definiuje relację między połączonym zasobem a bieżącym dokumentem.

noopener nakazuje przeglądarce nawigację do celu bez przyznawania dostępu do rodzica, który go otworzył. Zakładka docelowa Window.opener będzie null.

noreferrer uniemożliwia przeglądarce, podczas nawigacji do celu, wysyłanie do strony nadrzędnej adresu lub innej wartości jako referrer poprzez referent Nagłówek HTTP. Należy zauważyć, że ta nazwa nagłówka HTTP jest celowo błędnie zapisana jako "referrer".

2. JavaScript linki

Dla JavaScript Window.open można dodać wartości noopener i noreferrer w windowFeatures parametru Window.open funkcja, ale różne przeglądarki mogą reagować inaczej, dlatego zaleca się wykonanie funkcji Window.opener jak null po użyciu Window.open() funkcja.

Czytaj więcej:

Rails API i CORS. Szczypta świadomości

Strategie pobierania danych w NextJS

7 powodów, dla których twój sklep internetowy potrzebuje Magento

Jeśli uważasz ten artykuł za interesujący, śledź Łukasza na Githubie: https://github.com/twistezo

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polska

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

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