2015-04-24 2 views
0

Я построение API, где каждая строка запроса запрос содержит следующее:Целесообразно использовать подпись (данные запроса хешированные с помощью закрытого ключа) как nonce, чтобы избежать повторных атак?

  • отметки о время
  • Пара данных параметров
  • Открытого ключ
  • подписи (параметры данных и метку времени hashed с закрытым ключом)

При получении запроса сервер проверяет метку времени и отклоняет слишком старые запросы. Сервер также проверяет подпись.

Возможно ли сохранить подпись в базе данных на некоторое время, чтобы убедиться в отсутствии повторных атак в течение действительного таймфрейма? Это явно близко к тому, как работает nonce, но я был бы рад услышать ваши мысли о подходе.

+4

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это напрямую не связано с программированием. Такие вопросы гораздо лучше подходят для [security.se] (или даже [crypto.se]). –

+0

Я буду помнить об этом в будущем. Спасибо за ваши мысли, @ArtjomB. –

ответ

0

Это довольно стандартная техника.

Однако, я бы добавил в список поле "nonce". Причина в том, что происходит, если два законных запроса выдаются за одну секунду? Просто сохраняя подпись, вы отклоняете действительный запрос.

Но если вы позволите клиенту сгенерировать 128-битное значение nonce и включить его в запрос, тогда они могут отправлять столько запросов в секунду, сколько захотят.

Затем просто сохраните список замеченных нот вместе с меткой времени. И вы можете очистить этот список в зависимости от истечения срока.

+0

Благодарим вас за то, что вы указали вариант использования, когда в течение одной секунды выдается несколько законных запросов. Я добавлю nonce API. –

Смежные вопросы