Nasze
sklepy internetowe są odporne na
ataki XSS !
Ataki typu XSS (ang.
Cross Site Scripting) opierają się na
nieświadomym przekazywaniu złośliwego kodu przez
witryny internetowe. Osoba atakująca przekazuje
złośliwy kod do aplikacji internetowej. Kod ten
zostaje umieszczony na stronie internetowej.
Atak taki składa się z trzech
etapów:
Najpierw napastnik łączy się
z aplikacją internetową, po czym przesyła do
niej złośliwy kod:
<SCRIPT type="text/javascript">
alert('atak');
</SCRIPT>
Kod ten może stanowić treść
listu przekazywanego na forum dyskusyjnym czy
adres email podany w polu nadawcy listu. Po
odebraniu przez aplikację internetową, złośliwy
kod zostaje zapisany w bazie danych.
W drugim etapie, użytkownik
będący ofiarą nieświadomie wykonuje kod
przekazany przez osobę atakującą. Użytkownik po
zalogowaniu wchodzi na stronę zawierającą złośliwy
list, po czym wyświetla jego zawartość. W wyniku
wyświetlenia listu przeglądarka wykonuje złośliwy
kod JavaScript, który
przekazuje pewne poufne dane osobie atakującej.
W ostatnim etapie, napastnik
odbiera poufne dane przekazane do niego przez
złośliwy skrypt.
W opisanym schemacie
wykorzystane są trzy potencjalnie luki w
bezpieczeństwie aplikacji internetowej:
-
aplikacja zapisuje złośliwy
kod;
-
aplikacja wysyła złośliwy
kod;
-
przeglądarka wykonuje
złośliwy kod;
Pierwsza z luk polega na tym,
że aplikacja nie weryfikuje danych pochodzących
od osoby atakującej. Ataki XSS są kolejnym
istotnym głosem w dyskusji na temat walidacji
danych pochodzących z zewnątrz aplikacji. Dane
należy koniecznie weryfikować! Do aplikacji
wpuszczamy jedynie dane, co do których jesteśmy
pewni, że nie spowodują żadnych problemów. Ani w
aplikacji internetowej, ani w przeglądarce
użytkownika po umieszczeniu na stronie WWW.
Druga z luk jest nieco
bardziej problematyczna. Aplikacja pobierając
dane z bazy danych powinna, przynajmniej w
pewnych sytuacjach, poddać dane ponownej
walidacji. Zasadność tego testu może podważać
fakt, że rekordy bazy danych przed umieszczeniem
w bazie poddaliśmy gruntownemu sprawdzeniu.
Jeśli zrezygnujemy z takiego testu, wówczas
każda luka w bazie danych może zostać
wykorzystana do zrealizowania ataku.
Ostatnia luka jest znacznie
trudniejsza do wyeliminowania. Eliminacja
wykonywania kodu JavaScript
przez przeglądarkę wymaga całkowitego wyłączenia
interpretacji JavaScript.
Taka operacja nie może być wykonana przez
aplikację internetową, a jedynie przez
administratora konkretnego komputera. Wiąże się
jednak z tym pewien problem, mianowicie wiele
innych serwisów wykorzystuje JavaScript do
pokazania choćby drzewek katalogów, gdy wyłączymy
obsługe JS nie będziemy wstanie zobaczyć
katalogu.