REST api error response: должен быть информативным или нет? - PullRequest
0 голосов
/ 11 января 2019

Я использую REST API и сомневаюсь в содержании ответа в случае ошибки. Например, я использую токен jwt для аутентификации. Если клиент предоставляет неверный токен, сервер отвечает кодом состояния 401 со следующим телом

{
   "status":"failed",
   "details":"JWT token not valid"
}

Если клиент не предоставляет токен, сервер отвечает кодом состояния 401 со следующим телом

{
   "status":"failed",
   "details":"missing JWT token"
}

и т. Д.

Эти ответы HTTP информативны и полезны при отладке. Проблема в том, что злоумышленник теперь знает, что API использует токен вместо базовой аутентификации или системы аутентификации другого типа. По этой причине сейчас я рассматриваю возможность ответа только с кодом статуса и пустым телом. Этот HTTP-ответ не является информативным. Злоумышленник не знает, что происходит, и то же самое происходит со мной при отладке. Мой вопрос: какова лучшая практика? Информационный контент или нет? Нужно ли создавать безопасность с неясностью или нет?

Спасибо

1 Ответ

0 голосов
/ 11 января 2019

Если вы вернете 401, клиент все равно увидит, какие схемы аутентификации поддерживаются:

"Сервер, генерирующий ответ 401, ДОЛЖЕН отправить поле заголовка WWW-Authenticate (раздел 4.1), содержащее, по крайней мере, один запрос, применимый к целевому ресурсу." - https://greenbytes.de/tech/webdav/rfc7235.html#status.401

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...