Co to są skrypty między witrynami?

Jedną z najczęstszych klas luk w zabezpieczeniach witryn internetowych jest „Cross-Site Scripting” lub „XSS”. Podatności XSS to miejsca, w których użytkownik może spowodować wykonanie JavaScriptu. Istnieje wiele różnych wariantów luki XSS o różnym stopniu ważności.

Problem z tym, że atakujący jest w stanie wykonać JavaScript w sesjach innych użytkowników, polega na tym, że osoba atakująca może wtedy zrobić cokolwiek w witrynie, którą widzą ofiary. Obejmuje to przekierowywanie ofiar na zewnętrzne strony internetowe, kradzież tokenów uwierzytelniających i monitorowanie szczegółów płatności.

Najpoważniejszą formą luki XSS jest „przechowywane” lub „trwałe” cross-site Scripting, w tym miejscu atakujący może stworzyć ładunek XSS, a następnie przesłać go, dzięki czemu zostanie zapisany w bazie danych. Po zapisaniu exploita XSS w bazie danych możliwe jest, że będzie on oddziaływał na innych użytkowników przez dłuższy czas.

Inną formą Cross-Site Scripting jest „Reflected”, ten typ nie jest w żadnym momencie zapisywany, zamiast tego ładunek jest umieszczany w przeglądarce. Zazwyczaj ten typ XSS jest częścią ataków phishingowych, w których atakujący próbuje nakłonić ofiarę do kliknięcia złośliwego łącza.

Ogólnie rzecz biorąc, większość ataków XSS ma w pewnym momencie ładunek wysyłany do serwera, ale niektóre ataki są: wyłącznie po stronie klienta, nigdy nie są wysyłane na serwer, a zamiast tego wpływają tylko na stronę klienta JavaScript. Nazywa się to XSS opartym na DOM, ponieważ pozostaje w JavaScript Document Object Model lub DOM. Ten rodzaj luki jest szczególnie trudny do zidentyfikowania i usunięcia, ponieważ exploity nigdy nie są widziane przez serwer, a więc nie mogą być rejestrowane.

Historycznie technika zapobiegania lukom XSS polegała na filtrowaniu wszystkich danych przesłanych przez użytkowników przy użyciu list bloków do odrzucania wszelkich wiadomości zawierających znaczące znaki lub słowa w JavaScript. Prowadziło to zwykle do wyścigu zbrojeń w poszukiwaniu obejścia filtra, jednocześnie uniemożliwiając niektóre legalne zgłoszenia użytkowników. Poprawnym rozwiązaniem jest użycie encji HTML do kodowania danych przesłanych przez użytkownika. przy włączonych modułach encji HTML znaki są automatycznie kodowane do formatu, w którym przeglądarka wie, że ma wyświetlać je jako poprawne symbole, ale nie traktuje ich jako kodu.