Un sito web deve chiedere il permesso per accedere al microfono e alla webcam?

3

A meno che non ci siano impostazioni nel tuo browser, sia Windows, Linux o Android, se non esplicitamente consentito , è la progettazione standard che richiede l'interazione dell'utente (permesso) affinché una pagina web possa accedere al microfono e webcam? Quali misure di sicurezza sono in atto per impedire accessi indesiderati o addirittura accidentali?

Qual è il processo standard per fare ciò, sia dalle regole che maliziosamente? Credo che Javascript.

    
posta user58446 15.01.2017 - 07:01
fonte

2 risposte

3

È corretto. HTML5 espone l'API getUserMedia per accedere alle risorse multimediali sull'host.

Vedi qui per un'implementazione di riferimento. Questo è il codice in azione: link

In termini di ciò che le specifiche dicono sulla sicurezza, citando da questo sito web :

Security

Some browsers throw up an infobar upon calling getUserMedia(), which gives users the option to grant or deny access to their camera/mic. The spec unfortunately is very quiet when it comes to security.

Permission dialog in Chrome: If your app is running from SSL (https://), this permission will be persistent. That is, users won't have to grant/deny access every time.

Questo è il problema per implementare il supporto delle autorizzazioni nelle specifiche stesse: link

Tuttavia, in pratica, tutti i browser standard richiedono l'autorizzazione tramite una casella popup (o una barra informazioni) prima di accedere alle risorse multimediali. Quindi, per quanto si usa un browser moderno, dovrebbe chiedere il permesso.

Se si utilizza un browser non standard, versione modificata della shell chromium o app electronjs / nwjs basate su desktop, è possibile che il browser non richieda il permesso, ma anche in questo caso tutte le altre garanzie di sicurezza fornite dai browser moderni (ad esempio, l'auditor XSS, CORS, la stessa politica di origine, ecc.) sono valide.

    
risposta data 15.01.2017 - 07:37
fonte
2

Dalla rete per sviluppatori Mozilla:

The MediaDevices.getUserMedia() method prompts the user for permission to use one video and/or one audio input device such as a camera or screensharing and/or a microphone. If the user provides permission, then the returned Promise is resolved with the resulting MediaStream object. If the user denies permission, or media is not available, then the promise is rejected with PermissionDeniedError or NotFoundError respectively. Note that it is possible for the returned promise to neither resolve nor reject, as the user is not required to make a choice.

In Firefox, sembrerebbe che il browser visualizzi una richiesta quando si accede al metodo Javascript per la prima volta. Il codice JS non gestisce il prompt, ma piuttosto il browser.

Il metodo più vecchio funziona ancora in Firefox e funziona allo stesso modo. Il codice è fornito di seguito:

// 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
    // ...
}

Questo significa 2 cose:

  1. Devi abilitare Javascript o permetterlo con NoScript
  2. Indipendentemente da dove e quando viene chiamato il metodo JS, il browser chiederà all'utente un'opzione.

Link MDN: link

Dimostrazione precedente (funziona ancora): link

    
risposta data 15.01.2017 - 07:38
fonte

Leggi altre domande sui tag