WebUSB - 这只是一个在现有JavaScript API之上工作的USB库吗?

时间:2018-02-05 04:34:08

标签: webusb

假设:

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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