Я створюю веб-службу, яка використовує виключно JSON для своїх запитів та вмісту відповідей (тобто, ніяких корисних навантажень, закодованих у формі).
Чи є веб-служба вразливою до атак CSRF, якщо наведене нижче відповідає дійсності?
Будь-який
POSTзапит без об'єкта JSON найвищого рівня, наприклад,{"foo":"bar"}буде відхилено за допомогою 400. Наприклад,POSTзапит із вмістом42буде відхилено.Будь-який
POSTзапит із типом вмісту, відмінним від того,application/jsonбуде відхилено за допомогою 400. Наприклад,POSTзапит із типом вмістуapplication/x-www-form-urlencodedбуде відхилено.Усі запити GET будуть безпечними і, таким чином, не змінюватимуть будь-які дані на стороні сервера.
Клієнти аутентифікуються за допомогою сеансового файлу cookie, який веб-служба надає їм після того, як вони надають правильну пару ім’я користувача / пароль через POST із даними JSON, наприклад
{"username":"user@example.com", "password":"my password"}.
Допоміжне запитання: Чи будь-коли PUTта DELETEзапити вразливі для CSRF? Я запитую, бо здається, що більшість (усіх?) Браузерів забороняють ці методи у формах HTML.
РЕДАГУВАТИ: Додано елемент No4.
РЕДАГУВАТИ: На сьогоднішній день є багато хороших коментарів та відповідей, але ніхто не пропонував конкретної атаки CSRF, на яку вразлива ця веб-служба.