Chrome 89 推出了具有安全限制的 WebHid API。
限制包括:
瀏覽器選項卡切換時,Javascript 無法接收 USB 隱藏資料。
當用戶打開選擇 html 元素時,Javascript 無法接收 USB 隱藏資料
.....鏈接中的更多內容
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)
為了重現限制:
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);
});
當用戶點擊“test”選擇元素打開它時,它將停止接收資料。
代碼沙盒上的作業示例
Javascript cannot receive USB Hid data when browser tab switched.
我現在不能每次在Mac Chrome上重現它,我確實device.addEventListener("inputreport",...)在標簽交換時在簡單的測驗環境中通過API接收HID設備資料。但是我發現它在我真正的生產 React.js 應用程式中停止了,該應用程式運行了更多的 javascript 和計時器( setInterval )。
uj5u.com熱心網友回復:
不,沒有用于繞過 HID 阻止串列的 chrome://flags 標志,由于存在風險,我們不打算添加一個標志。該allow_protected_reports標志由 Chrome 的內部 HID 客戶端使用,不應為 Javascript 客戶端啟用。(如果腳本可以訪問受保護的報告,那么實作鍵盤記錄器來捕獲密碼和其他私人資訊就變得微不足道了。)
如果您覺得 HID 阻止串列阻止了不應阻止的內容,請編輯您的問題以分享有關您嘗試訪問的設備的更多資訊。您還可以在托管阻止串列的WebHID 規范跟蹤器上提交錯誤。
瀏覽器選項卡切換時,Javascript 無法接收 USB 隱藏資料。
這不是故意的,我們希望應用程式需要對 HID 設備進行后臺訪問才能在選項卡不可見時正常運行。您能否編輯您的問題以添加有關您對此進行測驗的作業系統(和作業系統版本)的更多資訊?(或提交Chromium 錯誤)
當用戶打開選擇 html 元素時,Javascript 無法接收 USB 隱藏資料
我不確定這意味著什么,你能提供一個測驗用例來證明這個問題嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340567.html
