背景与价值设备接口权限敏感,需严格治理来源与触发方式,避免越权或钓鱼行为。统一规范来源白名单:仅允许受控域使用设备接口。用户手势:仅在点击等用户手势触发时调用。权限提示:统一提示与撤销入口。核心实现来源与用户手势校验const allowOrigins = new Set(['https://app.example.com']) function originAllowed(): boolean { try { const u = new URL(document.location.href); return allowOrigins.has(u.origin) } catch { return false } } async function connectUsb(button: HTMLButtonElement): Promise<boolean> { if (!originAllowed()) return false let ok = false button.addEventListener('click', async () => { try { const d = await (navigator as any).usb.requestDevice({ filters: [] }) ok = !!d } catch { ok = false } }, { once: true }) button.click() return ok } async function connectBle(button: HTMLButtonElement): Promise<boolean> { if (!originAllowed()) return false let ok = false button.addEventListener('click', async () => { try { const d = await (navigator as any).bluetooth.requestDevice({ acceptAllDevices: false, filters: [] }) ok = !!d } catch { ok = false } }, { once: true }) button.click() return ok } 落地建议在受控来源下并以用户手势触发设备权限,提示用户与提供撤销入口。验证清单是否仅在受控来源与用户手势触发;权限提示与撤销是否可用。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.728115s