От новичка до гуру: Курсы программирования на CyberDuff

getUserMedia() в chrome 47 без использования https

В chrome версии 47 они заставляют вас использовать https, чтобы разрешить использование getUserMedia(). К сожалению, я не могу использовать https во всей своей сети, я использую его только для входа в систему (это SPA - одностраничное приложение). Итак, адрес в сеть без https, только логин остальной использует ssl. Я использую этот репозиторий с очень небольшими изменениями: https://github.com/Jmlevick/html-recorder.

Мой вопрос: есть ли способ использовать аудиомагнитофон в моем веб-приложении и сохранить мой веб-адрес с http, а не с https? какие идеи у вас есть, чтобы преодолеть эту проблему?


  • в версии 51 этого нет. кто-нибудь знает, какие версии затронуты? всего 47? 06.07.2016

Ответы:


1

getUserMedia позволяет вам для прослушивания личных разговоров пользователя. Если бы он был включен через незашифрованный HTTP, это позволило бы злоумышленнику внедрить код, который прослушивает и отправляет разговоры злоумышленнику. Например, если вы находитесь в частном конференц-зале отеля с незашифрованным Wi-Fi, все, кто находится рядом с отелем, могут подслушивать. Даже если ваше приложение обычно не имеет дело с конфиденциальными разговорами, злоумышленник может заменить ваш код на их, чтобы прослушать позже, когда используется другое приложение.

Поэтому getUserMedia доступен только из защищенных контекстов. Для тестирования вы можете освободить свой домен, запустив Chrome с --unsafely-treat-insecure-origin-as-secure="example.com" или просто протестировав под http://localhost/.

Если вы хотите, чтобы ваше приложение прослушивало микрофон пользователя, вы должны обслуживать его через TLS. Нет никакого способа обойти это. Если бы они были, это было бы расценено как дыра в безопасности и исправлено в следующей версии браузеров.

СОВЕТ

Возможно, вам придется добавить «http://» в командную строку, например: --unsafely-treat-insecure-origin-as-secure="http://example.com"

10.12.2015
  • Спасибо! Я понимал риск отправки аудио в зашифрованном HTTP. Позвольте отложить этот вопрос в сторону на секунду. Будет ли это работать, если я использую диктофон в iframe со ссылкой на приложение https-рекордера, которое обрабатывает аудиозапись внутри моего http-приложения и отправляет сообщение с аудиоданными из этого iframe его родителю (моему приложению), а затем выполняет некоторую обработку на аудио (даже отправлять его на сервер по незащищенному http)? 10.12.2015
  • @Noampz Нет, потому что злоумышленник может изменить внутренний кадр из внешнего. Для получения дополнительной информации см. ссылку на безопасные контексты. 10.12.2015
  • Прямо сейчас вы можете без проблем использовать getUserMedia() в firefox на http. Это действительно ошибка? Я чувствую, что политика Firefox разрешает такие вещи. 19.10.2016
  • @Teleporting Goat Firefox (пока) не применил ограничения безопасного контекста к getUserMedia. Это может быть связано с тем, что безопасные контексты появились в Firefox сравнительно недавно. Если такие вещи включают сервисные работники, веб-Bluetooth и расширения Encrypted Media, те, которые уже заблокированы в небезопасных контекстах. 19.10.2016
  • @phihag Для Китая нет ssl. что делать в этой ситуации. Как получить доступ к камере без https 07.11.2019
  • Как это сделать на macOS? 05.12.2019
  • Я разрабатываю под локальным хостом и добавил его в исключения небезопасно-обрабатывать-небезопасное-происхождение-как-безопасное. Но я все еще получаю эту ошибку. localhost:4400 says: getUserMedia() must be run from a secure origin: HTTPS or localhost 18.06.2020
  • это также можно установить из chrome://flags/ под Insecure origins treated as secure 03.12.2020

  • 2

    Также вы можете добавить белый список, открыв chrome://flags и найдя unsafely-treat-insecure-origin-as-secure:

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

    08.07.2019
  • это решило проблему для меня 13.07.2020
  • Новые материалы

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..

    «Раскрытие математических рассуждений с помощью Microsoft MathPrompter и моделей больших языков»
    TL;DR: MathPrompter от Microsoft показывает, как использовать математические рассуждения с большими языковыми моделями; 4-этапный процесс для улучшения доверия и рассуждений в математических..

    Раскройте свой потенциал в области разработки мобильных приложений: Абсолютная бесплатная серия
    Глава 6: Работа в сети и выборка данных Глава 1: Введение в React Native Глава 2: Основы React Native Глава 3: Создание пользовательского интерфейса с помощью React Native Глава 4:..

    Все о кейсах: Camel, Snake, Kebab & Pascal
    В программировании вы сталкивались с ними при именовании переменной, класса или функции. Поддержание согласованности типов и стилей случаев делает ваш код более читабельным и облегчает совместную..