Я создаю веб-службу, которая исключительно использует JSON для своего содержимого запроса и ответа (то есть без кодированных полезных данных).
Является ли веб-служба уязвимой для атаки CSRF, если верно следующее:
-
Любой запрос
POSTбез объекта JSON верхнего уровня, например,{"foo":"bar"}, будет отклонен с 400. Например, запросPOSTс содержимым42будет таким образом отклонен. -
Любой запрос
POSTс типом контента, отличным отapplication/json, будет отклонен с 400. Например, запросPOSTс типом контентаapplication/x-www-form-urlencodedбудет таким образом отклонен. -
Все запросы GET будут безопасно и, таким образом, не будут модифицировать серверные данные.
-
Клиенты аутентифицируются через куки файлы сеанса, которые веб-служба предоставляет им после того, как они предоставляют правильную пару имени пользователя/пароля через POST с данными JSON, например.
{"username":"[email protected]", "password":"my password"}.
Вспомогательный вопрос: запросы PUT и DELETE всегда уязвимы для CSRF? Я спрашиваю, потому что кажется, что большинство (всех?) Браузеров запрещают эти методы в HTML-формах.
EDIT: Добавлен элемент # 4.
EDIT: много хороших комментариев и ответов до сих пор, но никто не предлагал конкретную атаку CSRF, для которой этот веб-сервис уязвим.