У меня есть два вопроса:
Q1: Почему OAuth2 требует, чтобы параметры были упорядочены и закодированы (для двухногих)?
Все, о чем нужно беспокоиться, - это согласованная подпись в конце для данных (строка запроса).
Мы можем просто проверить подпись, сгенерированную с использованием строки запроса (например, a = 1 & b = 2). Поскольку подпись создается на основе секретного ключа, который известен только клиенту и провайдеру, мы можем рассматривать строку запроса без какого-либо упорядочения/кодирования.
Итак, какое преимущество при выполнении заказа/кодирования, а затем создание подписи?
Q2: Как эта подпись может спасти меня от атаки "человек-в-середине"?
Если мне нужно сделать такой запрос на моем сервере с клиента:
increaseUserPoints?userId=1&pointsToAdd=5&appId=x&token=XYZ
Теперь токен XYZ будет всегда таким же, поэтому хакер может продолжить отправку одного и того же запроса, чтобы увеличить points
. Так как сгенерированный токен из данного appId
тот же, сервер разрешит это. Как обрабатывается этот случай?