Cross-site-scripting (znane również jako XSS) to luka w zabezpieczeniach sieci Web, która pozwala osobie atakującej na złamanie interakcji użytkowników z aplikacją zawierającą lukę. Umożliwia osobie atakującej obejście tej samej zasady pochodzenia, która ma na celu oddzielenie różnych witryn sieci Web od siebie wzajemnie. Luki w zabezpieczeniach cross-site-scripting zwykle umożliwiają atakującemu na podszywanie się pod użytkownika będącego ofiarą, na wykonywanie wszelkich działań, które użytkownik jest w stanie wykonać, oraz na dostęp do dowolnych danych użytkownika. Jeśli użytkownik ofiary ma uprzywilejowany dostęp do aplikacji, osoba atakująca może uzyskać pełną kontrolę nad wszystkimi funkcjami i danymi aplikacji.
Istnieją trzy główne typy ataków XSS. Są to:
- Reflected XSS – gdzie złośliwy skrypt pochodzi z bieżącego żądania HTTP.
- Stored XSS – gdzie złośliwy skrypt pochodzi z bazy danych witryny.
- DOM-based XSS – gdzie luka występuje w kodzie po stronie klienta, a nie w kodzie po stronie serwera.
Jak zapobiegać atakom Cross-site-scripting (XSS) ?
Zapobieganie atakom cross-site-scripting jest w niektórych przypadkach trywialne, ale może być znacznie trudniejsze w zależności od złożoności aplikacji i sposobu, w jaki obsługuje ona dane kontrolowane przez użytkownika. Ogólnie rzecz ujmując, skuteczne zapobieganie podatności XSS będzie wymagało połączenia następujących środków:
- Filter input on arrival – w punkcie, w którym otrzymywane są dane wejściowe użytkownika, filtruj tak ściśle, jak to możliwe, na podstawie oczekiwanych lub prawidłowych danych wejściowych.
- Encode data on output – w punkcie, w którym dane sterowane przez użytkownika są wyprowadzane w odpowiedziach HTTP, należy zakodować dane wyjściowe, aby zapobiec ich interpretacji jako aktywnej zawartości. W zależności od kontekstu wyjściowego może to wymagać zastosowania kombinacji kodowania HTML, URL, JavaScript i CSS.
- Use appropriate response headers – aby zapobiec XSS w odpowiedziach HTTP, które nie mają zawierać kodu HTML ani JavaScript, możesz użyć nagłówków Content-Type i X-Content-Type-Options, aby upewnić się, że przeglądarki interpretują odpowiedzi w zamierzony sposób.
- Content Security Policy – ostatnią linią obrony jest stosowanie zasad bezpieczeństwa treści (CSP), aby zmniejszyć wagę wszelkich nadal występujących luk w zabezpieczeniach XSS.
W celu uzyskania szczegółowych informacji jak bronić się przed atakami typu XSS, CERT Energa rekomenduje zapoznanie się z artykułem Organizacji OWASP: https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html