Расширения в хроме - огромные возможности и проблемы
Пару дней назад вновь открыл для себя разработку расширений для хрома (прошлая попытка года 3 назад обернулась неудачей из-за непонимания документации). И, знаете, таких возможностей автоматизации рутинных действий в браузере и атак на пользовательские данные, кажется, нет нигде.
[много непонятных терминов из веб-разработки]
Начнем с автоматизации. Для хранения аутентифкационных токенов в одном из проектов мы используем сессионное хранилище, которое сбрасывается после закрытия вкладки.
Как было: чтобы стартовать проект, нужно каждый раз вручную открывать специальный сайт, авторизоваться, открыть консоль разработчика, забрать токен из сессионного хранилища сайта и вставить в хранилище проекта, который в это время циклично обновляется в поисках токена.
Все это длится секунд 30. Вроде бы не очень долго, но флоу не самый приятный, особенно, если это приходится делать несколько раз в день.
Как работает сейчас: после запуска проекта в хроме нужно нажать на иконку расширения, после чего в проекте появится валидный токен.
Как работает сейчас под капотом:
после нажатия на кнопку расширение:
⁃ открывает новое маленькое окно с сайтом, откуда надо забрать токен (токен нельзя запросить с другого сайта из-за настроенных параметров CORS).
⁃ дожидается его загрузки, внедряет скрипт с запросом на авторизацию
⁃ Запускает скрипт, ожидает ответа на запрос
⁃ Скрипт отправляет полученные данные расширению вместе с командой закрыть окно
⁃ Расширение закрывает окно с сайтом и вкладку с проектом, открывает новую вкладку и вставляет полученные данные в сессионное хранилище
И все это занимает секунд 5, из которых самое долгое - ожидание загрузки сайта. Потраченное время на запуск снизилось на 83%, но более значимо то, что DX стал гораздо приятнее.
[/много непонятных терминов из веб-разработки]
А теперь про безопасность. Те читатели, кто не перескочил через часть про автоматизацию, уже понимают, что расширение в хроме по сути может делать все что угодно: как насчёт того, чтобы открыть любую вкладку без ведома пользователя и вытащить оттуда локальное хранилище, куки и токены? А, может, лучше сразу внедрить скрипт, чтобы собрать персональные данные из социальных сетей, а после этого отправить запрос на сброс логов?
Удивительно, как много внимания в ежедневной повестке уделяется защите при установке приложений на Android/IOS, и как мало браузерным расширениям. Если первые при установке запросят все разрешения у вас вручную, то вторые даже не уведомят, когда начнут собирать данные с открытых вкладок и окон.
Поэтому избегайте установки сторонних расширений не из официального магазина. Либо проверяйте исходный код расширения, если это опен-сорс проект, и собирайте его вручную.
Post #80
399