1

Chrome 89 推出了具有安全限制的 WebHid API。

限制包括:

  1. 切换浏览器选项卡时,Javascript 无法接收 USB Hid 数据。

  2. 当用户打开选择 html 元素时,Javascript 无法接收 USB Hid 数据

.....更多在链接

Chromium 项目中有一个提交The blocklist may be bypassed by passing allow_protected_reports=true when connecting to the devic

有没有办法设置allow_protected_reports=true绕过 UI 上的这些限制,例如chrome://flags

相关链接: https ://web.dev/hid/#security-privacy

2021.10.28更新

MacOS BigSur 11.2.3

Chrome 版本 95.0.4638.54(官方构建)(x86_64)

为了重现限制:

  1. Javascript cannot receive USB Hid data when user is opening select html element
   <select>
      <option> test </option>
    </select>
device.addEventListener("inputreport", (e) => {
        const data = e.data.buffer;
        console.log(new Date(), "received data", data);
      });

当用户单击“测试”选择元素将其打开时,它将停止接收数据。

代码沙盒上的工作示例

  1. Javascript cannot receive USB Hid data when browser tab switched.

我现在无法每次在Mac+Chrome上重现它,device.addEventListener("inputreport",...)当Tab切换时,我确实在简单的测试环境中通过API接收了HID设备数据。但我发现它在我的实际生产 React.js 应用程序中停止了,该应用程序运行更多的 javascript 和计时器 ( setInterval )。

4

1 回答 1

2

不,没有用于绕过 HID 阻止列表的 chrome://flags 标志,由于存在风险,我们不打算添加一个标志。该allow_protected_reports标志由 Chrome 的内部 HID 客户端使用,不应为 Javascript 客户端启用。(如果脚本可以访问受保护的报告,那么实现键盘记录器来捕获密码和其他私人信息就变得微不足道了。)

如果您认为 HID 阻止列表阻止了它不应该阻止的内容,请编辑您的问题以分享有关您尝试访问的设备的更多信息。您还可以在托管阻止列表的WebHID 规范跟踪器上提交错误。

切换浏览器选项卡时,Javascript 无法接收 USB Hid 数据。

这不是故意的,我们希望应用程序需要对 HID 设备进行后台访问才能在选项卡不可见时正常运行。您可以编辑您的问题以添加有关您测试过的操作系统(和操作系统版本)的更多信息吗?(或提交Chromium 错误

当用户打开选择 html 元素时,Javascript 无法接收 USB Hid 数据

我不确定这是什么意思,你能提供一个测试用例来证明这个问题吗?

于 2021-10-27T17:28:36.103 回答