WebUSB - это просто USB-библиотека, которая работает поверх существующих JavaScript API?

Предположения:

  • Все веб-браузеры уже могут общаться с HID-устройствами с помощью JavaScript.
  • Веб-браузер не сообщает пользователю, когда какой-то код JavaScript обращается к HID-устройству.
  • WebUSB - это библиотека JavaScript.

Здесь мои предположения верны? Или я что-то упустил?

Я задаю этот вопрос, потому что WebUSB утверждает, что он сделает USB-соединение более безопасным. Но я должен задаться вопросом, насколько безопасным может быть USB-соединение, если пользователь не знает, происходит ли / когда это происходит. Насколько я понимаю, прямо сейчас веб-сайт может взаимодействовать с USB-устройством, и браузеру не нужно сообщать пользователю, что это происходит.

WebUSB выглядит так, как будто он делает вещи более безопасными, потому что пользователь будет направлен на безопасный веб-сайт с безопасным интерфейсом и так далее, но мне не кажется, что он решает проблему с зиянием, когда вредоносный веб-сайт может поразить ваш USB устройство без вашего ведома. Я ошибаюсь?


person Christian Findlay    schedule 05.02.2018    source источник


Ответы (1)


  • Браузеры обычно не взаимодействуют с HID-устройствами напрямую, а вместо этого используют входной API операционной системы, который абстрагирует уровни HID и USB, чтобы обеспечить события более высокого уровня, такие как нажатие клавиши или перемещение мыши. Для экзотических HID-устройств, таких как геймпады, могут быть некоторые исключения. Тем не менее, браузер использует для этих устройств не JavaScript, а собственный системный API.
  • В связи с вышеизложенным понятие «JavaScript обращается к HID-устройству» не существует. JavaScript действительно получает эти высокоуровневые события от HID-устройств. Браузер явно не сообщает пользователю, что он их получает, потому что доставка события полностью находится под контролем пользователя. Например, JavaScript получит событие с клавиатуры пользователя только в том случае, если пользователь нажал клавишу, когда страница находится в фокусе. JavaScript не может отправлять данные на устройство, а только получать их.
  • WebUSB - это не библиотека JavaScript, а API, предоставляемый веб-браузером.

В отличие от обсуждения HID выше, браузеры, реализующие WebUSB (из которых в настоящее время есть только Chrome), уведомляют пользователя, если страница подключена к USB-устройству. Во-первых, есть запрос разрешения, который дает пользователю возможность выбрать, может ли страница и к какому устройству получить доступ. Во-вторых, на вкладке есть индикатор (похожий на тот, который указывает, что страница воспроизводит или записывает звук) всякий раз, когда у страницы есть активное соединение.

Следовательно, вредоносный веб-сайт не сможет попасть на ваше USB-устройство без вашего ведома.

person Reilly Grant    schedule 05.02.2018
comment
Это многое объясняет. - person Christian Findlay; 07.02.2018