У нас есть внутреннее веб-приложение, которое действует как репозиторий, к которому пользователи могут загружать файлы. Эти файлы могут быть любого формата, включая HTML-страницы.Как избежать XSS при загрузке HTML?
Мы тестировали, чем в IE8, если вы загружаете HTML-файл, содержащий некоторый скрипт, который пытается получить доступ к вашим файлам cookie, и после загрузки вы выбираете опцию «Открыть», скрипт выполняет и получает вашу информацию о файлах cookie без проблемы вообще.
Фактически, этот сценарий может использовать объект XmlHttpRequest для вызова сервера и выполнения некоторых вредоносных операций в сеансе пользователя, который загрузил файл.
Есть ли способ избежать этого? Мы протестировали, что и Chrome, и Firefox не позволяют этому случиться. Как можно избежать такого поведения в любом браузере, включая IE8?
Что делает «Open» на самом деле? Показать страницу в браузере? Если да, то каков URL страницы, когда это происходит? – bzlm
@bzlm: Это как с любым приложением; если вы заставляете браузер запрашивать окно загрузки (содержимое), вы все равно можете открыть его, и он открывается с использованием URL-адреса, используемого для его загрузки, который, очевидно, находится в том же домене, что и его файлы cookie, поэтому мое предложение (загрузки) в альтернативном домене. –
@bzlm находится на правильном пути: если вы открываете HTML-файл локально, он не сможет обращаться к куки-файлам и не выдавать запросы Ajax на удаленный сервер из-за политики единого домена. Только если он открывается непосредственно на сервере, что возможно. –