2015-12-10 50 views
14

在chrome版本47中,他们强制您使用https来允许使用getUserMedia()。 不幸的是,我无法在我的整个网络中使用https,我只在登录时使用它(它是SPA - 单页应用程序)。所以,网络的地址没有https,只有登录休息使用ssl。 我用这个回购用很少的改变: https://github.com/Jmlevick/html-recordergetUserMedia()in chrome 47 without use https

我的问题是,如果有任何方式使用录音机在我的web应用程序,并让我的网页地址以及HTTP和HTTPS不?你有什么想法来解决这个问题?

+0

没有这个在版本51.有没有人知道哪些版本受到影响?只有47? – ocram

回答

26

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

因此,getUserMedia仅限于secure contexts。对于测试,您可以使用--unsafely-treat-insecure-origin-as-secure="example.com"启动Chrome,或者只需在http://localhost/之下进行测试即可登录can exempt your domain

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

+0

谢谢!我了解以加密HTTP发送音频的风险。让我们把这个问题放在一边。如果我在带有https记录器应用程序的iframe中使用记录器,该记录器处理我的“http”应用程序中的音频记录,并将来自该iframe的音频数据发送到其父(我的应用程序),然后执行一些操作处理音频(甚至发送到服务器在不安全的http)? – Noampz

+0

@Noampz不,因为攻击者可以从外部修改内部框架。有关更多信息,请参阅[关于安全上下文的链接](https://w3c.github.io/webappsec-secure-contexts/#examples-framed)。 – phihag

+0

现在你可以在firefox中使用'getUserMedia()'而不会在http上出现任何问题。这真的是一个错误吗?我觉得在Firefox政策中允许这样的事情。 –