Что должно быть проверено первым токеном или параметрами? - PullRequest
0 голосов
/ 11 декабря 2018

Представьте, что в моем приложении 2 маршрута:

  • POST /login -> {token: some_token}
    маршрут для аутентификации, который возвращает токен для доступа ко второй функции

  • POST /divide -> {result: x / y}
    маршрут для функции имитации divide(x: int, y: int), защищенной токеном-носителем от первого маршрута.Также в этой функции у меня есть несколько валидаторов, то есть x и y должны быть целыми числами, y не должен быть равен 0 и возвращает 400: BadRequest, если один из этих критериев не выполнен

Итак, мой вопрос: если пользователь не предоставил токен-носитель и параметры для маршрута /divide, я должен вернуть 401 или 400?

Есть две вещи, которые касаются меня

  • return 400: пользователь может выяснить мою структуру API, отправив пустое тело и проанализировав ответ, например отправить пустое тело и получить {x: необходимо указать, y: необходимо указать}, затем отправить x = abc,y = bca и get {x: должно быть целым числом, y: должно быть целым числом} и т. д. *
  • return 401: пользователь может DDoS моего приложения, отправив много случайных токенов, поэтому для каждого запроса приложенияследует проверить хранилище, если токен действителен или нет

Какова лучшая практика в этом случае?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Без авторизации вы никоим образом не должны обрабатывать любой другой контент.Иначе зачем вообще иметь аутентификацию / авторизацию?Если вы обрабатываете контент, пока пользователь не авторизован, у вас, как правило, есть нарушение безопасности.Очевидно, для примера функции, которая не кажется большой проблемой, но в этом ее суть.

Таким образом, вы должны вернуть 401.

В случае проблемы DDoS этоне решается обработкой в ​​другом порядке, вам все равно придется проверять все токены.И даже если вы этого не сделаете, кто-то может сделать ваш сервис / API DDoS.Для этого есть другие решения (управление API), такие как регулирование, белый список, ограничение скорости и т. Д.

0 голосов
/ 11 декабря 2018

Ну, это похоже на вопрос "мнения", но я отвечу.Вам нужно вернуть 401, потому что авторизация - это первое, что вы должны сделать.Только если пользователь может получить доступ к ресурсу, мы можем продолжить процесс.

...