Me siento realmente estúpido en este momento: soy un desarrollador experimentado de javascript y PHP, ¡pero no puedo entender esto!
Desarrollé un sistema que permite a los usuarios crear widgets e integrarlos en sus propios sitios al incluir un archivo javascript generado dinámicamente. Ahora incorporé un sistema de autenticación para que los usuarios de estos widgets puedan registrarse e iniciar sesión en los sitios de mis clientes. Los datos de registro se almacenan en mi servidor.
Cuando un usuario se registra o inicia sesión, estaba planeando enviar algún tipo de token encriptado (de su identificación única) para que la próxima vez que acceda a un widget en el mismo sitio, el código lo iniciará automáticamente enviando el token a mi servidor y descifrarlo.
Sin embargo, si este token se almacena en el navegador a través de localStorage o una cookie, cualquiera que pueda tenerlo en sus manos podrá copiarlo y pegarlo, lo que le permitirá iniciar sesión como ese usuario. ¿Hay alguna manera de que pueda lograr lo que quiero sin este riesgo?
¡Gracias por adelantado!
Puedes usar JWT. El servidor genera JWT para la interfaz y cuando la interfaz recibe JWT, lo almacenará en el almacenamiento local. Localstorage es un lugar seguro para mantener JWT siempre que se asegure de que el usuario no pueda realizar ningún XSS en su aplicación.
También puede resolver CSRF con JWT si lo envía en el encabezado HTTP. Eso asegura que las solicitudes no autorizadas no pasen por otros dominios. Debería consultar esta biblioteca PHP JWT. Lo he usado en mis propios proyectos.