Mamy wewnętrzną aplikację internetową, która działa jako repozytorium, do którego użytkownicy mogą przesyłać pliki. Pliki te mogą mieć dowolny format, w tym strony HTML.Jak można uniknąć XSS w plikach do pobrania w formacie HTML?
Testowaliśmy niż w IE8, jeśli pobieramy plik HTML zawierający skrypt, który próbuje uzyskać dostęp do plików cookie, a po pobraniu wybierz opcję "Otwórz", skrypt wykonuje i pobiera informacje o plikach cookie bez problemy w ogóle.
W rzeczywistości skrypt ten mógłby użyć obiektu XmlHttpRequest w celu wywołania serwera i wykonania złośliwych operacji w sesji użytkownika, który pobrał plik.
Czy można tego uniknąć? Sprawdziliśmy, że zarówno Chrome, jak i Firefox nie pozwalają na to. Jak można tego zachowania uniknąć w dowolnej przeglądarce, w tym w IE8?
Co właściwie oznacza "Otwórz"? Pokaż stronę w przeglądarce? Jeśli tak, jaki jest adres URL strony, gdy tak się dzieje? – bzlm
@bzlm: To jak z dowolnym przywiązaniem; jeśli zmusisz przeglądarkę do podpowiedzi do okna pobierania (które zawiera zawartość), możesz kliknąć Otwórz, a otworzy się przy użyciu adresu URL używanego do załadowania go, który jest oczywiście w tej samej domenie co jego pliki cookie, stąd moja sugestia uruchamianie (pobieranie) w alternatywnej domenie. –
@bzlm znajduje się na właściwej ścieżce: jeśli otworzysz plik HTML lokalnie, nie będzie on mógł uzyskać dostępu do plików cookie ani wysyłać zapytań Ajax na serwer zdalny z powodu zasad dotyczących pojedynczej domeny. Tylko jeśli jest otwarty bezpośrednio na serwerze, który jest możliwy. –