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