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.