Cross-Site-Scripting (XSS) – jest to rodzaj podatności polegającej na wstrzyknięciu i wykonaniu kodu (najczęściej javascript) w aplikacji webowej w przeglądarce klienta. Skutkiem takiego działania może być wykradzenie cookies (przejęcie sesji), podmiana treści strony, wstawienie iframe, który będzie serwował linki do niepożądanych treści.

Typy błędów XSS

Persistent - umieszczenie złośliwego kodu po stronie serwerowej. Najczęstszym typem takiego ataku są wszelkiej maści fora oraz strony z formularzami, które umożliwiają zapisywania danych wprowadzonych przez użytkownika, a następnie ich wyświetlenie. Złośliwy fragment kodu jest umieszczany w formularzu, który nie waliduje danych i je zapisuje. Użytkownik wchodzący na stronę z wpisem automatycznie wykonuje złośliwe skrypt.

Reflective – najczęściej polega na wysłaniu użytkownikowi odpowiednio spreparowanego linku, który zawiera złośliwy kod. Otwarcie linku powoduje wykonanie kodu w przeglądarce ofiary.

XSS oparty na DOM – metoda podobna do ataku reflective, ponieważ dostarczany jest przez link, który zawiera złośliwy kod. Różnica polega jednak na tym, że złośliwy kod nie jest uwzględniany i wykonywany w odpowiedzi serwera, ale natychmiast wykonywany w przeglądarce ofiary.

Sposoby ochrony przed atakami XSS

Przede wszystkim wszystko co jest wprowadzane przez różnego rodzaju formularze musi być w odpowiedni sposób filtrowane i walidowane. Tak, aby nie dopuścić do przesłania złośliwego kodu.

Drugą popularną opcją jest wyświetlanie danych wprowadzanych przez użytkownika w trybie unsafe, czyli nie pozwalających na interpretację przez przeglądarkę jako kod.