0

假设:

  • 所有网络浏览器都可以使用 JavaScript 与 HID 设备通信
  • 当某些 JavaScript 代码正在与 HID 设备通信时,Web 浏览器不会告诉用户
  • WebUSB 是一个 JavaScript 库。

我的假设在这里正确吗?或者,我错过了什么?

我问这个问题是因为 WebUSB 声称它将使 USB 通信更安全。但是,我不得不想知道如果用户不知道它是否/何时发生,USB 通信会有多安全。我的理解是,现在,网站可以与 USB 设备通信,而浏览器不必告诉用户这种情况正在发生。

WebUSB 看起来会让事情变得更安全,因为用户将被引导到一个安全的网站,有一个安全的界面等等,但在我看来,它似乎并没有解决恶意网站可以攻击你的 USB 的巨大问题你永远不知道的设备。我错了吗?

4

1 回答 1

2
  • 浏览器通常不直接与 HID 设备对话,而是通过操作系统的输入 API 来抽象 HID 和 USB 层,以提供更高级别的事件,例如按键或鼠标移动。对于游戏手柄等外来 HID 设备,可能会有一些例外情况。尽管如此,浏览器并未对这些设备使用 JavaScript,而是使用本机系统 API。
  • 由于上述原因,“JavaScript 与 HID 设备对话”的概念不存在。JavaScript 确实可以从 HID 设备接收这些高级事件。浏览器没有明确告诉用户它正在接收它们,因为事件的传递完全在用户控制之下。例如,如果用户在页面处于焦点时按下了一个键,JavaScript 只会从用户的键盘接收一个事件。JavaScript 不能向设备发送数据,只能接收它。
  • WebUSB 不是 JavaScript 库,而是 Web 浏览器提供的 API。

与上面讨论的 HID 相比,实现 WebUSB 的浏览器(目前只有 Chrome)确实会在页面连接到 USB 设备时通知用户。首先,有一个权限提示,让用户可以选择页面是否可以访问以及可以访问哪个设备。其次,每当页面具有活动连接时,选项卡上都会有一个指示符(类似于指示页面正在播放或录制音频的指示符)。

因此,恶意网站无法在您不知情的情况下攻击您的 USB 设备。

于 2018-02-05T16:23:10.393 回答