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ą42zostanie w ten sposób odrzucone.Każde
POSTżądanie o typie treści innym niżapplication/jsonzostanie odrzucone z wartością 400. Na przykładPOSTżądanie o typie treściapplication/x-www-form-urlencodedzostanie 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 PUTi 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.