Я создаю json webservice (C#, WCF), и мне нужно идентифицировать пользователя. Нет управления сеансом, поэтому пользователю нужно будет отправить идентификационную строку для каждой команды. Решение, которое я придумал, - это AES. Шифровать учетные данные пользователя и время, когда строка «истекает» (в настоящее время 1000 мс), а затем использовать Base64 для ее кодирования (HttpServerUtility.UrlTokenEncode) перед отправкой (через URL-адрес или иначе).Как ввести энтропию в кодированную строку Base64?
Моя проблема в том, что закодированная строка почти всегда выглядит одинаково, с очень небольшим количеством изменений (я предполагаю, что это будет Minutes & Секунды истечения срока действия, так как дата и час учетных данных очень редко меняются. будет использоваться только один раз (записана последняя принятая строка, а вторая и последняя, вероятно, истекло), я все же думаю, что было бы легко просто перехватить и заблокировать запрос GET, вымыть несколько вещей, а затем повторно отправить их. когда атака автоматизирована, даже тайм-аут, вероятно, не будет работать.
Зв Как я могу ввести дополнительную (обратимую) энтропию к AES закодированы Base64 строку?
Почему это необходимо для обратимости? Не можете ли вы просто сгенерировать GUID, сохранить его в базе данных и другую необходимую информацию (пользователь, временную метку) и отправить ее пользователю? – svick