【问题标题】:WebUSB - Is this just a USB library that works on top of existing JavaScript APIs?WebUSB - 这只是一个在现有 JavaScript API 之上工作的 USB 库吗?
【发布时间】:2018-02-06 00:23:10
【问题描述】:

假设:

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

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

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

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

【问题讨论】:

    标签: webusb


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

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

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

    【讨论】:

    • 这说明了很多。
    猜你喜欢
    • 2016-02-24
    • 2012-02-13
    • 2021-11-18
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多