¿Tiene que pedir permiso un sitio web para acceder al micrófono y la cámara web?

3

A menos que haya configuraciones en su navegador, ya sea Windows, Linux o Android, a menos que se permita explícitamente , es un diseño estándar que requiere la interacción del usuario (permiso) para que una página web acceda al micrófono y ¿cámara web? ¿Qué medidas de seguridad existen para evitar el acceso no deseado o incluso accidental?

¿Cuál es el proceso estándar para hacer esto, tanto con las reglas como con malicia? Supongo que Javascript.

    
pregunta user58446 15.01.2017 - 07:01
fuente

2 respuestas

3

Eso es correcto. HTML5 expone getUserMedia API para acceder a los recursos multimedia en el host.

Consulte aquí para una implementación de referencia. Este es el código en acción: enlace

En términos de lo que dicen las especificaciones sobre la seguridad, citando este sitio web :

  

Seguridad

     

Algunos navegadores lanzan una barra de información al llamar a getUserMedia (), que les da a los usuarios la opción de otorgar o denegar el acceso a su cámara / micrófono. Lamentablemente, la especificación es muy tranquila cuando se trata de seguridad.

     

Diálogo de permiso en Chrome:   Si su aplicación se ejecuta desde SSL (https: //), este permiso será persistente. Es decir, los usuarios no tendrán que otorgar / denegar el acceso cada vez.

Este es el problema para implementar el soporte de permisos en la propia especificación: enlace

Sin embargo, en la práctica, todos los navegadores estándar piden permiso a través de un cuadro emergente (o una barra de información) antes de acceder a los recursos multimedia. Por lo tanto, en la medida en que uno use un navegador moderno, debe pedir permiso.

Si uno está usando un navegador no estándar, una versión modificada de cromo shell o aplicaciones electrónicas / nwjs basadas en escritorio, entonces es posible que el navegador no solicite permiso, pero de nuevo, en este caso, todas las demás garantías de seguridad que ofrecen los navegadores modernos (por ejemplo, el auditor de XSS, CORS, la política del mismo origen, etc.) se lanzan a la basura.

    
respondido por el CodeExpress 15.01.2017 - 07:37
fuente
2

De la Red de Desarrolladores de Mozilla:

  

El método MediaDevices.getUserMedia () solicita permiso al usuario   para usar un dispositivo de entrada de video y / o audio, como una cámara o   Compartir pantalla y / o un micrófono. Si el usuario proporciona permiso,   entonces la Promesa devuelta se resuelve con el MediaStream resultante   objeto. Si el usuario niega el permiso, o los medios no están disponibles, entonces   la promesa se rechaza con PermissionDeniedError o NotFoundError   respectivamente. Tenga en cuenta que es posible que la promesa devuelta   ni resolver ni rechazar, ya que el usuario no está obligado a realizar una   elección.

En Firefox, parece que el navegador muestra un mensaje cuando se accede al método Javascript por primera vez. El código JS no controla la solicitud, sino el navegador.

El método anterior aún funciona en Firefox y se maneja de la misma manera. El código se proporciona a continuación:

// Fork getUserMedia for multiple browser versions, for those that need prefixes.
navigator.getUserMedia = (navigator.getUserMedia ||
                          navigator.webkitGetUserMedia ||
                          navigator.mozGetUserMedia ||
                          navigator.msGetUserMedia ||
                          navigator.oGetUserMedia );

/**
 * Checks whether getUserMedia() is available and if so, launches the animation.
 */

if (navigator.getUserMedia)
{
    navigator.getUserMedia ({ audio: true },
    // Success callback
    // ...
}

Esto significa 2 cosas:

  1. Debe tener habilitado Javascript, o permitirlo con NoScript
  2. Independientemente de dónde y cuándo se llame al método JS, el navegador solicitará al usuario una opción.

Enlace de MDN: enlace

Demostración anterior (aún funciona): enlace

    
respondido por el dark_st3alth 15.01.2017 - 07:38
fuente

Lea otras preguntas en las etiquetas