Я створюю веб-службу, яка використовує виключно 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, на яку вразлива ця веб-служба.