Si los tokens CSRF están incrustados en etiquetas meta, ¿cómo ofrecen seguridad?

0

Si alguien está usando mi sitio web y cierra una pestaña, el token CSRF ahora se ha ido del lado del cliente, porque estaba incrustado en la página. Si esa misma persona abre el sitio en una nueva pestaña, la página se entregará con el token CSRF en una etiqueta meta. No necesitaban enviar el token CSRF para que se entregue la página, porque el token CSRF se había ido.

Si un sitio web malintencionado pudiera de alguna manera enviar una solicitud de origen cruzado a mi sitio web, ¿qué evitaría que simplemente solicitara una página y luego explorara los datos de respuesta en busca del token CSRF?

    
pregunta csrftokens 19.07.2018 - 14:23
fuente

1 respuesta

1

Están a salvo debido a la Política del mismo origen: un origen A (site.com) no puede leer un recurso de otro origen (other.fr) a menos que haya incluido en la lista blanca que usa Access-Control-Allow-Origin .

En el caso de CSRF básico, el ataque no consiste en leer la respuesta, sino que consiste en engañar al servidor para que realice una acción que fue disparada por un usuario víctima sin que esta víctima lo sepa.

Por lo tanto, en CSRF básico, la víctima tiene un token que el atacante no puede conocer (la política del mismo origen lo impide). Cuando la víctima solicita algo al servidor ( /user/delete?id=15 pero en el mundo real, no pase el ID por GET sino por POST porque está cambiando el estado del servidor), entonces el servidor verificará si ese token está presente y es válido. Si no (porque lo dispara el atacante, que no puede conocer el token), el servidor se niega a procesarlo y el usuario 15 no se elimina. Cuando el token está aquí y es válido, el servidor elimina al usuario y devuelve la respuesta (el atacante aún no puede leer esa respuesta).

Así, Same-Origin evita que el atacante lea la respuesta, mientras que el token CSRF evita que el servidor procese una solicitud no preparada.

    
respondido por el Xenos 19.07.2018 - 14:54
fuente

Lea otras preguntas en las etiquetas