Os serviços web JSON são vulneráveis a ataques de CSRF?
Estou construindo um serviço da web que usa exclusivamente o JSON para seu conteúdo de solicitação e resposta (ou seja, nenhum formulário de cargas codificadas).
Um serviço da Web é vulnerável a ataques de CSRF se o seguinte for verdadeiro?
QualquerPOST
solicitação sem um objeto JSON de nível superior, por exemplo,{"foo":"bar"}
, será rejeitado com um 400. Por exemplo, umPOST
pedido com o conteúdo42
seria assim rejeitado.
QualquerPOST
pedido com um tipo de conteúdo diferente deapplication/json
será rejeitado com um 400. Por exemplo, umPOST
solicitação com tipo de conteúdoapplication/x-www-form-urlencoded
seria assim rejeitado.
Todos os pedidos GET serãoSeguroe, portanto, não modificará nenhum dado do lado do servidor.
Os clientes são autenticados por meio de um cookie de sessão, que o serviço da Web fornece a eles depois de fornecer um par de nome de usuário / senha correto por meio de um POST com dados JSON, por exemplo,{"username":"[email protected]", "password":"my password"}
.
Pergunta complementar: sãoPUT
eDELETE
solicitações sempre vulneráveis ao CSRF? Eu pergunto porque parece que a maioria dos navegadores (todos?) Desaprovam esses métodos em formulários HTML.
EDIT: Adicionado item # 4.
EDIT: Muitos bons comentários e respostas até agora, mas ninguém ofereceu um ataque CSRF específico para o qual este serviço web é vulnerável.