token CSRF para la aplicación de servicio de API

0

Actualmente, mi arquitectura es la siguiente.

  • la API se sirve desde api.domain.com .
  • La aplicación de interfaz se sirve desde frontend.domain.com .

Estoy considerando dos métodos diferentes para la protección CSRF:

  1. Permitir que el frontend adquiera un token CSRF realizando una solicitud a api.domain.com/getCSRF después de que se cargue por primera vez.
  2. Habilitar CORS en mi api.domain.com y permitir la solicitud solo desde frontend.domain.com .

Encontré un sitio web importante con mi primer enfoque para obtener el token CSRF, pero no creo que sea un buen enfoque. ¿Cuál de mis métodos es mejor para la protección CSRF?

    
pregunta iam batman 04.04.2018 - 08:35
fuente

1 respuesta

2

Necesitarías ambos:

  • Solo el # 1 solo, sin ninguna política de CORS, no permitiría que el frontend leyera las respuestas. Y si establece una política de CORS generosa, le permitiría a cualquier persona incluida en el CSRF.

  • Solo el # 2 solo no ofrecería protección CSRF. No necesita el permiso de CORS para enviar solicitudes normales sin verificación previa, como enviar un formulario normal. Los ataques aún pueden ser montados desde cualquier dominio. CORS no protege contra CSRF porque no está diseñado para hacerlo.

Juntos trabajan. El token garantiza que solo se permiten las solicitudes "no falsificadas", y la política CORS garantiza que solo el frontend pueda poner sus manos en el token.

También debo mencionar que en situaciones como esta, con una API que sirve como frontend, la protección CSRF a menudo viene "automáticamente" porque se usa un token de portador en el encabezado de autenticación (a diferencia de una cookie). Entonces, si ese es su esquema de autenticación, es posible que ya esté protegido. Sin embargo, implementar otra capa de defensa no duele.

    
respondido por el Anders 04.04.2018 - 09:24
fuente

Lea otras preguntas en las etiquetas