Cómo almacenar un token de acceso de usuario en un sitio de terceros en la parte delantera

1

Estoy trabajando en un plugin de wordpress que proporciona un sistema de hilos de comentarios como disqus (pero diferentes).

Para iniciar sesión (para publicar comentarios), el flujo de trabajo es así:

  • El usuario hace clic en el inicio de sesión en el blog de wordpress
  • Se abre una ventana emergente con el formulario de inicio de sesión en la API de backend para mi complemento (otro sitio)
  • El usuario inicia sesión y utiliza PostMessage y devuelvo un token de acceso.

Ahora, con ese token de acceso, cuando realice acciones como subir votos o publicar un comentario, le enviaré una solicitud de publicación a mi API de backend junto con el token y si el token es válido, agrego el comentario / upvote a la base de datos.

Pero no estoy seguro de cómo manejar de forma segura el token de usuario: mi primer pensamiento fue ponerlo en una cookie, pero luego cualquier blog de wordpress malicioso puede ejecutar algunos js para robar automáticamente todos los tokens de los usuarios que inician sesión en sus sitios web.

Y dado que todo el registro está ocurriendo en la parte delantera del blog de wordpress, no veo cómo puedo almacenar datos de manera que la API de back-end pueda acceder a ellos cuando el usuario realiza una acción pero no un blog malicioso. .

¿Cómo puedo almacenar ese token de forma segura? Pensé en incrustar el sitio web en un iframe para confiar en las variables de sesión, pero no estoy seguro de qué tan seguro es.

    
pregunta drovfr 03.09.2018 - 13:28
fuente

1 respuesta

1

Ese token debe ser configurado por su servidor back-end, no por el sitio de wordpress que usa su complemento.

Si su servidor establece httpOnly cuando emite la cookie, las solicitudes (por ejemplo, a través de JavaScript desde el sitio de wordpress que usa el complemento) a su backend tendrán esa cookie incluida en la solicitud por el navegador mientras que el propio javascript ( desde la página de wordpress) no tendrá acceso a ella.

De la OWASP :

  

Si el indicador HttpOnly (opcional) está incluido en el encabezado de respuesta HTTP, no se puede acceder a la cookie a través del script del lado del cliente (de nuevo si el navegador admite este indicador). Como resultado, incluso si existe una falla de secuencias de comandos entre sitios (XSS), y un usuario accede accidentalmente a un enlace que explota esta falla, el navegador (principalmente Internet Explorer) no revelará la cookie a un tercero.

Después de todo, su pregunta implica que no pensó en su modelo de comunicación en todo momento; esta información nunca necesita ser accesible desde el alcance del blog de wordpress.

    
respondido por el Tobi Nary 03.09.2018 - 14:38
fuente

Lea otras preguntas en las etiquetas