Руководство по безопасности браузеров (Browser Security Handbook). Глава 1
4. Псевдо-протоколы URL
В дополнение к вышеупомянутым
подлинным URL-протоколам, современные браузеры поддерживают множество псевдо-протоколов,
используемых для реализации дополнительных функций, таких как выделение в
самостоятельный элемент закодированных
документов в URL-адресе,
обеспечение действующих функций скриптов, предоставление доступа к внутренней
информации браузера и представление данных.
Выделение протокола в
самостоятельный элемент представляет интерес для любого приложения,
обрабатывающего ссылки, т.к. эти методы обычно вводят нестандартный анализ содержания
или режим рендеринга поверх уже существующих ресурсов, указанных в конце URL.
Основное содержание извлекается с помощью HTTP, найденного в определенном месте
(например, в file:///), или
полученного с помощью другого обобщенного метода (и в зависимости от того, как
эти данные будут потом обработаны), и может выполняться в контексте
безопасности, связанного с происхождением этих данных. Например, URL-адрес jar:http://www.example.com/archive.jar!/resource.html будет
восстановлен по http-протоколу из http://www.example.com/archive.jar.
Из-за выделения протокола в
самостоятельный элемент, браузер будет пытаться обработать полученный файл как java-архив (JAR) и извлечь его, а затем отобразить /resource.html внутри этого архива, в рамках
сайта example.com.
Общие выделения протоколов в
самостоятельный элемент отражены в таблице 4.
Таблица 4
Название протокола
|
MSIE7
|
MSIE8
|
FF3
|
Safari
|
Opera
|
Chrome
|
Android
|
feed (RSS, draft spec)
|
НЕТ
|
НЕТ
|
НЕТ
|
ДА
|
НЕТ
|
НЕТ
|
НЕТ
|
hcp, its, mhtml, mk, ms-help, ms-its, ms-itss (Windows help archive
parsing)
|
ДА
|
ДА
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
jar (Java archive parsing)
|
НЕТ
|
НЕТ
|
ДА
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
view-cache, wysiwyg (просмотр кэшированных страниц)
|
НЕТ
|
НЕТ
|
ДА
|
НЕТ
|
НЕТ
|
ДА
|
НЕТ
|
view-source (просмотр исходного кода
страницы)
|
НЕТ
|
НЕТ
|
ДА
|
НЕТ
|
НЕТ
|
ДА
|
НЕТ
|
В дополнение к перечисленным существуют
также протоколы, используемые для доступа к внутренним функциям браузера и не
связанные с веб-контентом. В эти псевдо-протоколы входят: about: (предназначен для
отображения информации о встроенных функциях, интерфейсах для настройки и пр.),
moz-icon: (используется для
доступа к файлу иконки), chrome:,
chrome-resource:, chromewebdata:, resource:, res: и rdf:
(используются для ссылки на встроенные ресурсы браузера; часто предоставляется
с повышенными привилегиями). Как правило, веб-контенту не разрешается напрямую
ссылаться на конфиденциальные данные, однако, они могут быть атакованы на доверенных сайтах
при уязвимости в браузере.
И, наконец, существуют псевдо-протоколы,
которые разрешают выполнять скрипты или передавать данные, содержащиеся в URL,
унаследованные от абонента. Таким образом, злоумышленник может получить доступ к
конфиденциальной информации сайта. Известные протоколы этого типа представлены
в таблице 5:
Таблица 5
Имя протокола
|
MSIE6
|
MSIE7
|
MSIE8
|
FF2
|
FF3
|
Safari
|
Opera
|
Chrome
|
Android
|
data (RFC 2397)
|
НЕТ
|
НЕТ
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
|
javascript (web scripting)
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
ДА
|
vbscript (Microsoft
proprietary scripting)
|
ДА
|
ДА
|
ДА
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|
НЕТ
|