Solicitud del token CSRF a través de AJAX para la aplicación web de JavaScript [duplicado]

1

Tengo una aplicación web JavaScript que se comunica con una API en un subdominio diferente. El HTML y Javascript están todos alojados en S3.

Un token CSRF convencional se coloca en el cuerpo de la página HTML y se usa por un form o se lee por JavaScript; pero como el HTML está alojado estáticamente, esto no es posible en mi caso.

¿Es seguro solicitar un token CSRF del servidor durante el inicio de la aplicación con una solicitud AJAX? El token resultante podría adjuntarse como encabezado a todas las futuras solicitudes a la API.

¿Existe una mejor solución para proteger contra los ataques CSRF en mi arquitectura?

    
pregunta Steve 28.06.2017 - 14:35
fuente

2 respuestas

0

Sí, siempre y cuando se respeten las precauciones habituales; solicítelo una vez al inicio de la sesión, luego manténgalo dentro de la aplicación, asegure la solicitud de API con SSL, asegúrese de que el token se haya creado correctamente (aleatoriamente cifrada, reclamaciones cifradas, etc.)

Hay más información en la página de OWASP sobre prevención de CSRF aquí:

    
fuente
0

En realidad, no necesita el token, puede hacerlo usando un encabezado personalizado.

Sé que CSRF-Token es importante porque soy un cazador de recompensas de errores, pero puedes depender de la seguridad del navegador. Vi muchos casos en los que el símbolo CSRF se filtró desde el subdominio.

Por ejemplo, cuando envía datos desde a.mysite.com, incluya este encabezado:

Ok-Request: 1 

Ya que envía datos a varios dominios, debe configurar su encabezado HTTP Al igual que esto (para b.mysite.com):

Access-Control-Allow-Headers: x-requested-with, content-type, accept, origin, Ok-Request 
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Origin: a.mysite.com
Access-Control-Allow-Credentials:true



Cuando el navegador envíe un encabezado personalizado, primero realizará una Solicitud de OPCIÓN si todo está bien, como (Origen, Método, Encabezados), luego se realizará la solicitud real. De lo contrario, el navegador lanzará un error SOP .

    
respondido por el Abdullah Hussam 28.06.2017 - 15:59
fuente

Lea otras preguntas en las etiquetas