Tengo un sitio web, para el que hice un complemento para Firefox y Chrome. Ambos se distribuyen de forma privada. En Firefox solo se pueden instalar desde mi sitio web, y para Chrome, el enlace a almacenar solo se puede obtener en el sitio también.
El complemento está autorizado actualmente de la siguiente manera:
- El usuario inicia sesión en el sitio web
- El usuario va a la configuración
- El usuario elige 'Nueva clave'
- La clave se revela en el campo de texto, donde los usuarios pueden copiarla, luego la clave nunca volverá a mostrarse, a menos que se genere una nueva
- El usuario debe copiar y pegar la clave en el complemento
- El complemento está enviando la clave como parte de la comunicación con el servidor.
El servidor usa la clave para autorizar el complemento como uno de los usuarios. Da el permiso adicional del usuario autorizado, sin embargo, algunos permisos se reducen debido a la autorización sin contraseña, por ejemplo, el usuario no puede cambiar la contraseña o generar una nueva clave de aplicación (esto solo puede hacerse en el sitio web donde el usuario debe iniciar sesión). con nombre de usuario y contraseña).
Se advierte a todos los usuarios sobre los posibles efectos graves de compartir las claves con otras personas.
El sitio web utiliza HTTPS con HSTS y se envió recientemente a la lista de precarga. Por lo tanto, no me preocupa la pérdida de HTTP de la clave. La clave se almacena como parte de la API de browser.storage
Sin embargo, me preocupa que las claves sean lo suficientemente buenas para las aplicaciones.
Actualmente, las claves se generan usando bin2hex(random_bytes(64))
en PHP.
Si bien las claves tienen acceso limitado a la cuenta por defecto, me pregunto si este enfoque es seguro por su diseño o si existe un mejor enfoque para el cual podría autorizar el complemento, sin que los usuarios tengan que iniciar sesión. -en cada momento.
De forma predeterminada, la clave nunca se elimina automáticamente, sin embargo, los usuarios pueden eliminar la clave actual, y generar una nueva clave elimina la anterior de la base de datos.
Me pregunto si hay algún posible ataque en el que no haya pensado, o si hay formas aún mejores de autorizar a los usuarios.