¿Los servicios web de JSON son vulnerables a los ataques CSRF?
Estoy creando un servicio web que utiliza exclusivamente JSON para su contenido de solicitud y respuesta (es decir, sin carga útil codificada).
¿Un servicio web es vulnerable al ataque CSRF si se cumple lo siguiente?
AlgunaPOST
solicitud sin un objeto JSON de nivel superior, por ejemplo,{"foo":"bar"}
, será rechazado con un 400. Por ejemplo, unPOST
solicitud con el contenido42
Sería así rechazado.
AlgunaPOST
solicitud con un tipo de contenido diferente aapplication/json
será rechazado con un 400. Por ejemplo, unPOST
solicitud con tipo de contenidoapplication/x-www-form-urlencoded
Sería así rechazado.
Todas las solicitudes GET seránSeguro, y por lo tanto no modificar ningún dato del lado del servidor.
Los clientes se autentican a través de una cookie de sesión, que el servicio web les brinda después de proporcionar un par correcto de nombre de usuario / contraseña a través de un POST con datos JSON, por ejemplo.{"username":"[email protected]", "password":"my password"}
.
Pregunta auxiliar: SonPUT
yDELETE
¿Alguna vez ha sido vulnerable a la CSRF? Lo pregunto porque parece que la mayoría de los navegadores (¿todos?) Rechazan estos métodos en formularios HTML.
EDITAR: Artículo añadido # 4.
EDITAR: Muchos buenos comentarios y respuestas hasta ahora, pero nadie ha ofrecido un ataque CSRF específico al cual este servicio web es vulnerable.