El control de acceso permite la eficiencia de protección del navegador de origen

3

Estaba creando un sitio web a modo de experimento e intenté usar algunas solicitudes ajax para diferentes sitios. En algunos sitios obtendré un error:

  

XMLHttpRequest no puede cargar enlace No   El encabezado 'Access-Control-Allow-Origin' está presente en el pedido   recurso. Por lo tanto, no se permite el acceso al origen 'nulo'.

Cuando abrí Wireshark y vi lo que estaba pasando a través de la red, pude ver que incluso en los sitios que produjeron el error (lo que significa que no tenía Access-Control-Allow-Origin en la respuesta) se envió la solicitud a el sitio. Si cambié la respuesta para incluir el encabezado Access-control-allow-origin: *, la respuesta se procesará según sea necesario en mi sitio.

Mi pregunta es: si intentaba hacer CSRF en el sitio solicitado, la respuesta no importa tanto como lo hace la solicitud. Mientras la solicitud se procesó en example.com, no importa si la respuesta no tenía un encabezado de Access-Control-Allow-Origin o no (asumiendo que no me importa la respuesta, solo quería la acción) a realizarse).

¿Estoy en lo correcto y la protección es inútil o me falta algo?

    
pregunta t0m9er 05.07.2016 - 01:14
fuente

1 respuesta

1

Es importante tener en cuenta que CORS no está disponible para resolver todos los problemas de seguridad, sino uno específico que puede leer datos de un recurso de terceros (estoy en google.com pero Intento leer las cookies de facebook.com).

Eche un vistazo aquí :

  

El estándar de Intercambio de recursos entre orígenes funciona al agregar nuevos encabezados HTTP que permiten a los servidores describir el conjunto de orígenes permitidos para leer esa información mediante un navegador web.

Debido a que CORS existe solo para proteger la lectura de un sitio web de un tercero, y un ataque CSRF es enviar datos, el ataque CSRF que se lanzará probablemente funcione pero no obtendrá ninguna respuesta (de nuevo debido a la lectura restringida).

Nota: Aquí no hay nada especial, ya que puedes lanzar el ataque CSRF incluso si esto no fue posible a través de CORS. En lugar de enviarlo a través de AJAX, puede redirigir al usuario a la url específica usando location.href = www.example.com/csrfhack=some_hack

    
respondido por el Bubble Hacker 05.07.2016 - 01:29
fuente

Lea otras preguntas en las etiquetas