Service Worker — ключевая часть progressive web apps, дающая веб-приложениям способность работать без интернета и делать произвольную логику доступа к хранилищу.

Это JS-скрипт, который исполняется в фоновом процессе браузера и работает по относительно специфичной логике, перезапускается и перезагружается на усмотрение браузера и дает просто невероятное по меркам веба количество возможностей: перехват HTTP-запросов, обмен сообщениями с клиентом, предварительная фоновая подгрузка ресурсов, обновление в фоне и push-сообщения.

Однако это не единственный способ применения для них.

В этом докладе будет рассмотрен пример объединения набора технологий, ставших доступными за последний год-два-три, таких как набор криптографических API, subresource integrity, новые заголовки в браузерах (content security policy, public key pinning), и нескольких нестандартных техник использования HTTP и JS, позволяющий создать полноценное фоновое приложение, предоставляющее API для других сайтов в крайне непривычных для разработчиков условиях: сайты не доверяют запускаемому приложению и пытаются проверить код, который будет исполнен; сам сайт не доверяет этим приложениям и пытается защититься от различных видов атак — от чуть ли не clickjacking до инъекций при помощи браузерных плагинов; и в довесок — после первой установки это приложение не доверяет сайту, с которого было установлено, и не обновляется без разрешения пользователя (хотя, конечно, проверяет обновления).

Тема безопасности для веб-разработчиков болезненна — JS не являлся платформой для хранения информации, которая классифицируется как sensitive, но за последние годы произошел тихий переворот, который заметила небольшая часть разработчиков. Тема безопасности Service Worker слабо освещена, а параноидальный Service Worker точно является непривычным для веб-разработчиков явлением.

Всеволод Родионов
Всеволод Родионов

Биография будет выложена в ближайшее время