Для предотвращения атак повторного воспроизведения я реализую механизм, в котором клиент должен отправить на сервер токен nonce, который состоит из UUID и отметки времени. Они оба генерируются клиентом.
Однако у меня есть проблемы с отметкой времени. Я понимаю, что для того, чтобы это работало, часы сервера и клиентов должны быть синхронизированы c. У меня нет контроля над клиентами, и интуитивно кажется нереалистичным c ожидать, что часы сервера и клиентов будут полностью синхронизированы c. Таким образом, я ожидаю, что часы клиента могут быть на несколько секунд раньше или позже. получил. Я ожидаю, что разрыв будет более значительным, если соединение клиента плохое.
Из-за этих опасений я решил:
- Отклонять отметки времени старше 2 минут;
- Отклонять временные метки, установленные более чем на 10 секунд в будущее.
Я хотел бы получить мнение программистов, которые занимались проверкой временных меток. Вы видите проблемы с выбором, который я сделал в отношении проверки метки времени? С какими проблемами столкнулись вы ?
Спасибо!