2015-12-10 5 views
14

In Chrom-Version 47 erzwingen Sie die Verwendung von https mit getUserMedia() erlauben. Leider kann ich https in meinem gesamten Web nicht verwenden, ich benutze es nur im Login-Rest (It eine SPA - Single-Page-App). Also, die Adresse im Web ist ohne https, nur der Login-Rest verwendet ssl. Ich benutze diese Repo mit sehr wenig Änderungen: https://github.com/Jmlevick/html-recordergetUserMedia() in chrome 47 ohne Verwendung von https

Meine Frage ist, ob es eine Möglichkeit, Audio-Recorder in meiner Web-Anwendung zu verwenden und meine Web-Adresse mit http zu halten und nicht https? Mit welchen Ideen müssen Sie dieses Problem lösen?

+0

nicht auf Version 51. weiß jemand, welche Versionen betroffen sind? nur 47? – ocram

Antwort

26

getUserMedia können Sie in die privaten Gespräche des Benutzers hören. Wenn es über unverschlüsseltes HTTP aktiviert würde, würde dies einem Angreifer ermöglichen, Code einzuschleusen, der zuhört und die Konversationen an den Angreifer sendet. Wenn Sie sich zum Beispiel in einem privaten Konferenzraum eines Hotels mit unverschlüsseltem WLAN befinden, könnte jeder in der Nähe des Hotels mithören. Auch wenn Ihre App normalerweise keine sensiblen Gespräche führt, könnte ein Angreifer Ihren Code durch ersetzen ihre, um zu einem späteren Zeitpunkt zu hören, wenn eine andere App verwendet wird.

Daher ist getUserMedia nur verfügbar von secure contexts. Zum Testen können Sie can exempt your domain starten, indem Sie Chrome mit --unsafely-treat-insecure-origin-as-secure="example.com" starten oder einfach unter http://localhost/ testen.

Wenn Ihre App das Mikrofon des Benutzers hören soll, müssen Sie es über TLS bereitstellen. Es gibt keinen Weg darum herum. Gäbe es dies, würde dies als Sicherheitslücke angesehen und in der nächsten Version des Browsers behoben werden.

+0

Danke! Ich habe das Risiko verstanden, Audio in verschlüsseltem HTTP zu senden. Lassen Sie dieses Thema für eine Sekunde beiseite. Funktioniert es, wenn ich den Rekorder in einem Iframe mit Link zur HTTPS Recorder App verwende, der die Audioaufnahme in meiner "http" -App behandelt und eine Nachricht mit den Audiodaten von diesem Iframe an seinen Elternteil (meine App) posten und dann einige machen werde Verarbeitung auf dem Audio (sogar senden Sie es an den Server in ungesicherten http)? – Noampz

+0

@Noampz Nein, weil ein Angreifer den inneren Rahmen von dem äußeren ändern könnte. Weitere Informationen finden Sie im [Link zu sicheren Kontexten] (https://w3c.github.io/webappsec-secure-contexts/#examples-framed). – phihag

+0

Jetzt können Sie 'getUserMedia()' in Firefox ohne Probleme auf http verwenden. Ist das wirklich ein Fehler? Ich habe das Gefühl, dass es in der Firefox-Richtlinie liegt, solche Dinge zuzulassen. –