¿Campo seguro de cookie o encabezado de HttpOnly para el token de autenticación que asegura una API?

5

Tengo una API para asegurar. Potencialmente, habrá dos tipos de consumidores de esta API: nuestra propia aplicación de página única y servicios de terceros que se integrarán con ella.

He leído que, en general, las cookies no están favorecidas para las API REST, es mejor usar campos de encabezado. Quizás esto es sólo una convención.

Las cookies seguras son un mejor lugar para guardar el token de autenticación en un SPA. Evita que se obtengan mediante un ataque de script entre sitios. Además, si el SPA abre una nueva ventana / pestaña, el sessionStorage no fluye a través de él, lo que hace que el usuario tenga que iniciar sesión nuevamente. Puedes usar localStorage, pero no es una buena idea mantener los tokens de autenticación allí, ya que persiste.

¿Debo hacer que el filtro de autenticación en el lado del servidor acepte una cookie o un campo de encabezado? Pruebe primero la cookie, y si no está allí, intente el campo de encabezado? Las cookies serían utilizadas por los SPA y los campos de encabezado por otros consumidores de API. O, ¿sería mejor ir con una sola forma de transmitir el token de autenticación?

    
pregunta user2800708 08.04.2016 - 17:16
fuente

1 respuesta

2

Para la situación que describió, recomiendo transmitir información de autenticación solo en cookies. Como mencionó, esto evita la exfiltración del token de autenticación de un usuario desde su aplicación de una sola página.

Como una ventaja adicional, tener el token de autenticación como una cookie simplifica la lógica en su filtro de autenticación, ya que solo hay un lugar para verificar.

Tenga en cuenta que si hay un error de XSS en su SPA, el JavaScript del atacante todavía puede emitir solicitudes de suplantación del usuario, ya sea que use cookies o encabezados para el token de autenticación. Entonces, por favor, desinfecte su salida :-)

    
respondido por el PlasmaSauna 12.04.2016 - 09:37
fuente

Lea otras preguntas en las etiquetas