XSS
XSS (Cross-Site Scripting) to klasa podatności umożliwiająca wykonanie niepożądanego skryptu w przeglądarce użytkownika w kontekście podatnej aplikacji. Problem pojawia się, gdy nieufne dane są przetwarzane lub prezentowane w niebezpieczny sposób. Może dotyczyć zarówno treści zapisanych w systemie, jak i danych przekazywanych w żądaniu.
Jak działa?
Przeglądarka interpretuje fragment danych jako kod zamiast traktować go wyłącznie jako treść.
- Źródło danych: może nim być formularz, parametr adresu lub zawartość pochodząca z innego systemu.
- Niebezpieczne użycie: aplikacja umieszcza dane w miejscu wymagającym właściwego zabezpieczenia.
- Wykonanie w przeglądarce: kod działa w kontekście strony i uprawnień dostępnych w tej sytuacji.
- Ochrona: obejmuje odpowiednie kodowanie wyjścia, bezpieczne API oraz sanitację tam, gdzie dopuszczany jest HTML.
Dlaczego jest ważne dla biznesu?
Podatność może wpływać na użytkowników, dane i wiarygodność serwisu.
- Ochrona interakcji: bezpieczne przetwarzanie treści ogranicza możliwość ingerencji w działanie strony.
- Jakość rozwoju: wspólne zasady pomagają unikać powtarzania błędów w kolejnych widokach.
- Kontrola integracji: dane z zaufanego biznesowo partnera nadal wymagają odpowiedniej obsługi technicznej.
Zabezpieczenia zależą od kontekstu użycia danych. Dodatkowe mechanizmy, takie jak CSP, nie zastępują poprawnego programowania.
Przykład praktyczny
Portal wyświetla opisy produktów importowane od dostawców. Część opisów zawiera formatowanie HTML.
Projekt ustala dozwolony zakres znaczników i sposób oczyszczania treści. Zespół sprawdza także inne miejsca prezentacji, na przykład wyniki wyszukiwania i panel pracownika, ponieważ ten sam opis może trafiać do kilku widoków.
Jak Sintra może Ci pomóc?
Rozwijasz aplikację przetwarzającą treści użytkowników lub partnerów? Możemy pomóc w:
- przeglądzie implementacji — wskazaniu sposobów prezentowania nieufnych danych;
- poprawie kodu — zastosowaniu mechanizmów odpowiednich do danego kontekstu;
- weryfikacji zmian — przygotowaniu sprawdzeń dla istotnych ścieżek aplikacji.
Zakres prac uzgadniamy dla konkretnego produktu i jego danych.