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 webowych - luka XSS - 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-16
Software Development

Bezpieczeństwo aplikacji webowych - luka XSS

Łukasz Kolko

Ataki XSS umożliwiają atakującym wstrzykiwanie skryptów po stronie klienta na strony internetowe przeglądane przez innych użytkowników. Głównymi skutkami tej podatności jest możliwość wykonywania dowolnych akcji w kontekście zalogowanego użytkownika oraz odczytywania dowolnych danych w kontekście zalogowanego użytkownika.

Scenariusz ataku

  1. Atakujący lokalizuje lukę XSS na stronie internetowej używanej przez ofiarę, np. na stronie banku
  2. Ofiara jest obecnie zalogowana na tej stronie
  3. Atakujący wysyła ofierze spreparowany adres URL
  4. Ofiara klika adres URL
  5. Na ofierze bank strona internetowa, JavaScript kod rozpoczyna wykonywanie w celu przechwycenia danych użytkownika lub wykonania przelewu w jego imieniu na konto atakującego

Warto zauważyć, że operacje wykonywane w imieniu ofiary mogą być dla niej niewidoczne, gdyż mogą odbywać się w tle z wykorzystaniem API banku lub atakujący może wykonać je później z wykorzystaniem danych potrzebnych do uwierzytelnienia, tokenów, ciasteczek itp.

Typy XSS

1. Odbity XSS

Jest to taki, w którym kod HTML/JavaScript zawarty w dowolnym parametrze (np. GET, POST lub cookie) jest wyświetlany w odpowiedzi.

Strona z wejściem tekstowym do wyszukiwania czegoś, co umieszcza parametr search=foo w końcówce adresu URL podczas odpytywania API. Po wpisaniu dowolnej frazy, jeśli nie zostanie ona odnaleziona, zostanie wyświetlony komunikat zwrotny w formacie HTML.

<div>Nie znaleziono wyników dla <b>foo</b></div>

Możemy spróbować wpisać adres URL search=...

2.DOM XSS

Dzieje się tak, gdy jego wykonanie jest włączone przez użycie niebezpiecznych funkcji w JavaScript, takich jak `eval` lub `innerHtml`. Poniższy "Przykład na żywo" pokazuje atak DOM XSS oparty na funkcji `innerHtml` funkcja.

3. Przechowywane XSS

Jest to sytuacja, w której złośliwy kod zostaje napisany po stronie serwera. Na przykład, możemy wysłać komentarz ze złośliwym kodem do wpisu na blogu, który jest przesyłany na serwer. Jego zadaniem jest na przykład oczekiwanie na moderację administratora, a następnie kradzież jego danych sesji itp.

Metody wtrysku

1. W treści znacznika

`onerror=alert('XSS')`do

<img src onerror="alert('XSS')" />

2. W treści atrybutu

`" onmouseover=alert('XSS')` do

<div class="" onmouseover="alert('XSS')""></div>

  1. W treści atrybutu bez cudzysłowów

x onclick=alert('XSS')do

<div class="x" onclick="alert('XSS')"></div>

  1. W hrefatrybut ef

javascript:alert('XSS') do

<a href="javascript:alert('XSS')"></a>

  1. W ciągu wewnątrz kodu JavaScript

";alert('XSS')//. do

.
  1. W atrybucie ze zdarzeniem JavaScript

');alert('XSS')//. gdzie ' jest pojedynczym cudzysłowem, w

<div onclick="change('&#39;);alert('XSS')//')">John</div>

  1. W href atrybut wewnątrz protokołu JavaScript

);alert(1)//. gdzie %27 jest pojedynczym cudzysłowem, w

<a href="javascript:change('');alert(1)//')">kliknięcie</a>


Przykład na żywo

Metody obrony

  1. Kodowanie danych przy użyciu wbudowanych funkcji dostępnych w wielu aplikacjach języki programowania.
  2. Korzystanie z systemów szablonów z automatycznym kodowaniem. Większość popularnych frameworków korzystających z takich systemów chroni nas przed XSS injection (Django, Templates, Vue, React itp.).
  3. Nie używaj funkcji takich jak eval lub Funkcja z niezaufanymi danymi użytkownika.
  4. Nie używaj funkcji i właściwości, które przypisują kod HTML bezpośrednio do elementów drzewa DOM, np, innerHTML, outerHTML, insertAdjacentHTML, ocument.write. Zamiast tego można użyć funkcji, które przypisują tekst bezpośrednio do tych elementów, takich jak textContent lub innerText.
  5. Zachowaj ostrożność, przekierowując użytkownika na adres URL, który jest pod jego kontrolą. Ryzyko wstrzyknięcia location = 'javascript('XSS')'.
  6. Filtrowanie HTML przy użyciu bibliotek takich jak DOMPurify.
  7. Zachowaj ostrożność podczas przesyłania .html lub .svg files. Można utworzyć oddzielną domenę, z której będą obsługiwane przesłane pliki.
  8. Użyj Content-Security-Policy mechanizm.
  9. Spójrz na filtry anty-XSS wbudowane w większość popularnych przeglądarek.

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

Czytaj więcej:

Strategie pobierania danych w NextJS

Rails API i CORS. Szczypta świadomości

Dlaczego (prawdopodobnie) powinieneś używać Typescript?

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