¿Es seguro dar un token de Oauth al javascript del lado del cliente para que pueda realizar solicitudes directamente a un servidor?

7

Actualmente tengo una aplicación backbone.js simple servida desde mi dominio (example.com), que se proporciona con un token de Oauth. Específicamente, paso el token de Oauth a través de mi plantilla de página en los argumentos de constructor de mi clase de javascript (modelo Backbone). La aplicación backbone.js (que se ejecuta en el navegador) utiliza el token de Oauth para hablar directamente con un servidor remoto (no es el mismo servidor desde el que se sirvió la página).

¿Es seguro proporcionar el código javascript al token de Oauth de esta manera?

La página completa se sirve a través de https, por lo que efectivamente no hay preocupación por los ataques MITM. El navegador también tiene una cookie con los usuarios sesgados en ella, así que no creo que sea muy diferente a proporcionar el javascript del navegador con el token de Oauth.

Si esto es terrible, ¿hay algún método alternativo que pueda emplearse? ¿Sería mejor almacenar el token de Oauth en una cookie? (las mismas implicaciones de seguridad que tener un sessionid almacenado en una cookie).

    
pregunta csjohn 22.11.2013 - 22:48
fuente

1 respuesta

7

Un token de portador OAuth es una forma de mantener un estado de sesión utilizado para mantener un estado autenticado, y como una contraseña debe estar protegida. En el caso de un cliente backbone.js, un atacante podría obtener este valor utilizando xss. Almacenar el token de oauth como una cookie permite el uso del indicador httponly que evita que una carga útil xss lea este valor. incluso si el token de oauth está protegido con una cookie httponly, se puede usar xss para acceder a la api autenticada con una carga útil de JavaScript especialmente diseñada. Una cookie es mejor que otros métodos, sin embargo, xss y csrf siguen siendo preocupaciones importantes.

    
respondido por el rook 24.11.2013 - 19:49
fuente

Lea otras preguntas en las etiquetas