2015-12-10 25 views
14

Nella versione 47 di Chrome ti obbligano a utilizzare https per consentire l'uso di getUserMedia(). Sfortunatamente, non posso usare https in tutto il mio web, lo uso solo nel resto di login (It a SPA - app a pagina singola). Quindi, l'indirizzo web è senza https, solo il resto di accesso usa ssl. Io uso questo repo con molto piccole modifiche: https://github.com/Jmlevick/html-recordergetUserMedia() in chrome 47 senza utilizzare https

La mia domanda è se c'è un modo per utilizzare il registratore audio nella mia web app e mantenere il mio indirizzo web con http e non https? quali idee hai per superare questo problema?

+0

non hanno questo sulla versione 51. qualcuno sa quali versioni sono interessate? solo 47? – ocram

risposta

26

getUserMedia consente di ascoltare le conversazioni private dell'utente. Se fosse abilitato su HTTP non crittografato, ciò consentirebbe a un utente malintenzionato di iniettare il codice che ascolta e invia le conversazioni all'utente malintenzionato. Ad esempio, se ti trovi in ​​una sala conferenze privata di un hotel con WiFi non criptato, tutti gli utenti nelle vicinanze dell'hotel potrebbero ascoltare. Anche se la tua app non gestisce solitamente conversazioni sensibili, un utente malintenzionato potrebbe sostituire il tuo codice con loro per poter ascoltare in un secondo momento, quando un'altra app è in uso.

Pertanto, getUserMedia è disponibile solo da secure contexts. Per il test, è possibile eseguire can exempt your domain avviando Chrome con --unsafely-treat-insecure-origin-as-secure="example.com" o semplicemente testare con http://localhost/.

Se si desidera che l'app ascolti il ​​microfono dell'utente, è necessario servirlo tramite TLS. Non c'è modo di aggirarlo. Se ci fosse, sarebbe considerato un buco di sicurezza e risolto nella prossima versione dei browser.

+0

Grazie! Ho capito il rischio di inviare audio in HTTP crittografato. Lasciamo questo problema un lato per un secondo. Funzionerà se uso il registratore in un iframe con collegamento all'applicazione https recorder che gestisce la registrazione audio all'interno della mia app "http" e postare un messaggio con i dati audio da quella iframe al suo genitore (la mia app) e poi fare qualche elaborazione sull'audio (anche inviarlo al server in unsecured http)? – Noampz

+0

@Noampz No, perché un utente malintenzionato può modificare il frame interno da quello esterno. Per ulteriori informazioni, consultare il [collegamento sui contesti protetti] (https://w3c.github.io/webappsec-secure-contexts/#examples-framed). – phihag

+0

In questo momento puoi usare 'getUserMedia()' in firefox senza problemi su http. È davvero un errore? Mi sento come se fosse nella politica di Firefox per consentire cose come questa. –