2015-12-10 49 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政策中允許這樣的事情。 –