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