Actualmente estoy creando una aplicación con ReactJs y MongoDB para mostrar videos. Mi problema es que quiero evitar que el usuario final guarde esos videos, ya sea accediendo a la consola e inspeccionándola y, por lo tanto, obteniendo la URL del video o simplemente descargándolo en su computadora.
Por el momento, tengo un script que desconecta al usuario si abre devTools:
useEffect(() => { console.log(Object.defineProperties(new Error, { message: {get() { setOpened(true) } }, toString: {value() {(new Error).stack.includes('toString@')&&alert('Safari')}} })); if (openned) { logoutHandler() } }, []);Y otro para evitar hacer clic derecho:
useEffect(() => { document.onkeydown = function (e) { return false; }; document.addEventListener('contextmenu', (e) => { e.preventDefault(); setOpened(true) }); }, []);El problema es que con un complemento simple, https://addons.mozilla.org/fr/firefox/addon/absolute-enable-right-click/ , el usuario puede hacer clic derecho nuevamente y guardar el video haciendo clic en " Guardar vídeo como...".
También pensé en dividir los videos cuando los subo y luego "transmitirlos", pero no encontré ninguna documentación adecuada sobre el tema... Actualmente, los videos se almacenan en un depósito de Firebase.
¿Tendría algún consejo sobre el asunto, por favor?
En mi opinión, lo mejor que puedes hacer es dificultarlo y parece que lo estás haciendo muy bien. (minimice su código para ayudar a evitar que los usuarios usen anulaciones locales para pasar su seguridad, también puede buscar en DRM) Sin embargo, no puede evitar al 100% que un usuario guarde el video si se queda solo con la fuente. El usuario puede simplemente configurar una cámara, registro de pantalla, rastreo de paquetes (wireshark), modificar su javascript (anulaciones locales), etc., etc. Los firewalls no detienen a los dragones y todo eso.
Creo que la única forma de hacer lo que está tratando de hacer es monitorear a los usuarios mientras miran los videos.
Si sus usuarios necesitan cuentas para ver los videos, mostrar algunos píxeles en puntos especiales para que se decodifiquen más tarde, ya que la identificación de los usuarios es una forma de rastrear quién está filtrando sus videos y eliminarlos, pero incluso eso tiene sus problemas (compresión, recorte, marcas de agua, etc.).