Руководство по безопасности браузеров (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, draftspec ) | НЕТ | НЕТ | НЕТ | ДА | НЕТ | НЕТ | НЕТ |
hcp, its, mhtml, mk, ms-help, ms-its, ms-itss (Windows help archive parsing) | ДА | ДА | НЕТ | НЕТ | НЕТ | НЕТ | НЕТ |
jar ( Javaarchiveparsing ) | НЕТ | НЕТ | ДА | НЕТ | НЕТ | НЕТ | НЕТ |
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 ) | ДА | ДА | ДА | НЕТ | НЕТ | НЕТ | НЕТ | НЕТ | НЕТ |