chrome 47 中的 getUserMedia() 不使用 https

IT技术 javascript google-chrome permission-denied getusermedia
2021-02-07 00:08:08

在 chrome 版本 47 中,他们强制您使用 https 以允许使用 getUserMedia()。不幸的是,我不能在我的整个网络中使用 https,我只在登录休息中使用它(它是一个 SPA - 单页应用程序)。所以,网络地址没有https,只有登录休息使用ssl。我使用这个 repo 几乎没有变化:https : //github.com/Jmlevick/html-recorder

我的问题是是否有任何方法可以在我的网络应用程序中使用录音机并将我的网址保留为 http 而不是 https?你有什么想法来克服这个问题?

2个回答

getUserMedia允许您收听用户的私人对话。如果它是通过未加密的 HTTP 启用的,这将允许攻击者注入侦听并将对话发送给攻击者的代码。例如,如果您在酒店的私人会议室中使用未加密的 WiFi,酒店附近的每个人都可以收听。即使您的应用程序通常不处理敏感对话,攻击者也可以将您的代码替换为以便稍后在使用另一个应用程序时收听。

因此,getUserMedia只能从安全上下文中获得对于测试,您可以通过使用 启动 Chrome来免除您的域--unsafely-treat-insecure-origin-as-secure="example.com",或者简单地在 下进行测试http://localhost/

如果您希望您的应用收听用户的麦克风,您必须通过 TLS 为其提供服务。没有其他办法了。如果有,它会被视为一个安全漏洞并在下一个版本的浏览器中修复。

暗示

您可能需要在命令行中添加“http://”,例如: --unsafely-treat-insecure-origin-as-secure="http://example.com"

@Noampz 不,因为攻击者可以从外部修改内部框架。有关更多信息,请参阅有关安全上下文链接
2021-03-15 00:08:08
现在您可以getUserMedia()在 Firefox 中使用http,而不会出现任何问题。这真的是一个错误吗?我觉得在 Firefox 政策中允许这样的事情。
2021-03-24 00:08:08
@phihag 对于中国,没有 ssl。在这种情况下该怎么办。如何在没有https的情况下访问相机
2021-04-04 00:08:08
谢谢!我了解以加密 HTTP 发送音频的风险。让我们暂时搁置这个问题。如果我在 iframe 中使用录音机并链接到 https 录音机应用程序,该应用程序处理我的“http”应用程序内的录音,然后将带有音频数据的消息从该 iframe 发布到他的父级(我的应用程序),然后执行一些操作,它会起作用吗?处理音频(甚至以不安全的 http 将其发送到服务器)?
2021-04-06 00:08:08
@Teleporting Goat Firefox 尚未(尚未)对getUserMedia. 这可能是因为安全上下文是 Firefox 中最近才添加的。如果像这样的事情包括服务工作者、Web 蓝牙和加密媒体扩展,那么它们已经在不安全的上下文中被阻止了
2021-04-10 00:08:08

您也可以通过打开chrome://flags和搜索来添加白名单unsafely-treat-insecure-origin-as-secure

chrome://flags/#unsafely-treat-insecure-origin-as-secure

这为我解决了问题
2021-04-10 00:08:08