Безопасность HTML5 [Майкл Шмидт] (fb2) читать постранично, страница - 3


 [Настройки текста]  [Cбросить фильтры]

моменты, которые нужно хорошенько продумать при реализации соответствующих частей. В подразделах описываются уязвимости, которые могут возникнуть при реализации соответствующей возможности, а также безопасный способ ее реализации производителями браузеров. Например, авторы спецификации HTML5 выделили уязвимость под названием Information leakage (Утечка информации) для элемента canvas, которая возникает, если скрипты могут получать доступ к информации из разных источников. Далее в спецификации дается тщательное описание того, как избежать этой уязвимости в безопасной реализации (соответствующая выдержка из спецификации canvas для HTML5 находится в разделе 5.5.1 данного документа).

Помимо инструкций по безопасной реализации функционала, стандарт HTML5 содержит инновационные возможности, позволяющие решать существующие проблемы безопасности HTML:

Web Messaging: делает возможным безопасное общение между элементами с различных доменов и снимает необходимость в небезопасных хаках (см. раздел 2.5).

Inline Frame (Iframe) Sandboxing (Песочница для Iframe): Встроенные элементы Iframe теперь могут быть ограничены в возможностях. Можно, например, запретить запускать JavaScript [26] (см. раздел 2.9.3).

Вот еще пара примеров решения существующих проблем веб-приложений:

Сокрытие реферера: Добавление в ссылку атрибута rel со значением noreferrer предотвращает утечку информации через поле запроса referrer при переходе по ссылке. Это особенно полезно в почтовых веб-приложениях (POC приложение есть в разделе 5.2.11).

Безопасный контент-снифинг: Процедура определения типа ресурса теперь определена строго, что смягчает атаки на алгоритм контент-снифинга, т. е. автоматического определения типа контента (описано в [27]). Выдержки из спецификации HTML5, которые описывают правила определения типа контента, приведены в разделе 5.5.2.

Оставшуюся часть главы не следует воспринимать как доказательство того, что HTML5 совершенно небезопасен. Безопасность является важной частью спецификации HTML5. Тем не менее, введение нового функционала также расширяет возможности запуска новых атак, а даже безопасные возможности могут быть использованы некорректно. Следовательно, эволюция текущих веб-стандартов на пути к HTML5, добавляя новые возможности, порождает новые угрозы и уязвимости. Новые возможности HTML5 открывают инновационные пути для злоумышленников. Эти новые уязвимости, угрозы и векторы атак рассматриваются в данной главе. В итоге здесь дается представление о возможностях HTML5, открывающих новые угрозы и уязвимости, и подчеркиваются проблемные моменты.

Следующий список дает представление о возможностях HTML5, обсуждаемых в данной главе. Каждая возможность, описанная в этом списке, будет проанализирована более детально в своем подразделе. Таким образом, сначала дается представление о возможности, а затем описываются уязвимости и угрозы, возможные сценарии атаки и (если существуют) меры противодействия им. В главе рассматриваются следующие возможности HTML5:

Cross-Origin Resource Sharing (CORS, Междоменное разделение ресурсов)[28]: CORS позволяет клиентам делать междоменные запросы через XMLHttpRequest. В HTML5 ослаблена политика ограничения домена, которая изолирует документы с различных доменов друг от друга [29]. При определенных условиях в HTML5 возможно запрашивать ресурсы с других доменов и делиться с ними информацией.

Web Storage (Веб-хранилище) [30]: С помощью технологии Web Storage веб-приложения могут обходить ограничения количества хранимой на стороне клиента информации. Используя Web Storage, веб-приложения могут хранить около пяти мегабайт данных на стороне клиента и получать к ним доступ через JavaScript в ходе последующих сессий.

Offline Web Application (Оффлайновые веб-приложения) [31]: Используя эту технологию HTML5, веб-приложения могут работать в оффлайн-режиме. Сначала, в онлайн-режиме, веб-приложение посылает ПА инструкции, в результате которых необходимая информация сохраняется в оффлайновом кэше веб-приложения. Впоследствии приложение можно использовать в оффлайн-режиме, не нуждаясь в Интернет-соединении.

Web Messaging [32]: Iframe-ы одного веб-приложения, соответствующие разным доменам, могут общаться друг с другом через HTML5 Web Messaging. При разработке Iframe можно заложить возможность принимать сообщения от других Iframe-ов.

Custom scheme and content handlers (Специальные обработчики схемы и контента) [3]: HTML5 позволяет веб-приложениям регистрироваться в качестве обработчиков URI-схем и типов контента. Например, веб-приложение может зарегистрироваться как обработчик почтовых ссылок (mailto): на какую бы ссылку типа mailto на каком бы домене не нажал пользователь, он будет перенаправлен на зарегистрированное веб-приложение.

Web Sockets API [33]: Этот прикладной программный интерфейс HTML5 предоставляет способ установления полнодуплексного канала между сервером и ПА. Через этот канал возможен асинхронный обмен данными. Приемы AJAX (Asynchronous JavaScript and XML) больше