¿Los servicios web JSON son vulnerables a los ataques CORF?

0

¿Un servicio web es vulnerable al ataque CSRF si se cumple lo siguiente?

  • Se rechazan las solicitudes GET / OPTIONS
  • El token se usa para la autenticación, sin el token no podemos acceder a la aplicación
  •   

    Access-Control-Allow-Origin: * está configurado

Estoy creando un servicio web que utiliza exclusivamente JSON para su contenido de solicitud y respuesta

    
pregunta Mohammed Farhan 08.11.2017 - 16:34
fuente

2 respuestas

1

Esto no es vulnerable si el tipo de contenido solo acepta application / json porque no puedes crear un formulario html que publique ese tipo de contenido, y eso es lo que deberías hacer csrf si no puedes usar ajax, lo cual no puedes con lo anterior Encabezado CORS. Además, si el token está en el encabezado de autorización, no es vulnerable porque no se enviará en un ataque csrf.

    
respondido por el joe 10.11.2017 - 06:10
fuente
0

Su Access-Control-Allow-Origin se verificará con una solicitud OPTIONS , que se rechaza, por lo que XHR no es posible.

En general, la respuesta de joe es correcta, pero tenga en cuenta que es crucial tener el tipo de contenido de la solicitud siendo comprobado por el servicio web para ser application/json . Porque de hecho es posible enviar datos JSON válidos a través del formulario al aprovechar el atributo enctype="text/plain" .

Esto funciona con Chrome (hasta donde sé, depende del navegador cómo manejar el tipo de contenido de texto / sin formato):

<form action="https://example.com" method="post" enctype="text/plain">
    <input type="hidden" name='{"foo": "bar", "ignored-by-backend":"' value='"}'>
    <button>submit</button>
</form>

El navegador concatenará el nombre y el valor separados por un carácter = . Los datos JSON enviados al servicio web se ven así:

{"foo": "bar", "ignored-by-backend":"="}

También tenga en cuenta que hay un borrador para permitir enctype="application/json" , sin embargo, ya no se mantiene. y por lo que sé, ningún navegador lo implementa actualmente . Pero no podemos saber si será posible algún día.

    
respondido por el fishbone 14.09.2018 - 07:38
fuente

Lea otras preguntas en las etiquetas