Buduję usługę sieciową, która używa wyłącznie formatu JSON do obsługi żądań i odpowiedzi (tj. Żadnych ładunków zakodowanych w formularzu).
Czy usługa internetowa jest podatna na atak CSRF, jeśli spełnione są następujące warunki?
Każde
POST
żądanie bez obiektu JSON najwyższego poziomu, np.,{"foo":"bar"}
Zostanie odrzucone z wartością 400. Na przykładPOST
żądanie z zawartością42
zostanie w ten sposób odrzucone.Każde
POST
żądanie o typie treści innym niżapplication/json
zostanie odrzucone z wartością 400. Na przykładPOST
żądanie o typie treściapplication/x-www-form-urlencoded
zostanie odrzucone.Wszystkie żądania GET będą bezpieczne i nie będą modyfikować żadnych danych po stronie serwera.
Klienci są uwierzytelniani za pomocą sesyjnego pliku cookie, który serwis internetowy przekazuje im po podaniu poprawnej pary nazwa użytkownika / hasło za pośrednictwem POST z danymi JSON, np
{"username":"user@example.com", "password":"my password"}
.
Pytanie pomocnicze: czy PUT
i DELETE
żądania są kiedykolwiek podatne na CSRF? Pytam, ponieważ wydaje się, że większość (wszystkich?) Przeglądarek nie zezwala na te metody w formularzach HTML.
EDYCJA: Dodano punkt nr 4.
EDYCJA: Jak dotąd wiele dobrych komentarzy i odpowiedzi, ale nikt nie zaproponował konkretnego ataku CSRF, na który ta usługa sieciowa jest podatna.