我正在创建一个 json 网络服务(C#、WCF),我需要识别一个用户。没有会话管理,因此用户需要为每个命令发送一个标识字符串。我想出的解决方案是对用户的凭据和字符串“过期”的时间(当前为 1000 毫秒)进行 AES 加密,然后在发送(通过 URL 或其他方式)之前使用 Base64 对其进行编码(HttpServerUtility.UrlTokenEncode)。
我的问题是这样的:编码的字符串几乎总是看起来一样,只有很少的变化(我假设这将是到期的分钟和秒,因为凭证日期和时间很少改变。虽然一个字符串只能使用一次(记录了最后收到的字符串,倒数第二个可能已经过期了),我还是觉得拦截和阻塞GET请求会很容易,捏造一些东西然后重新发送。而当攻击是自动化,即使超时也可能不起作用。
所以。如何向 AES 编码的 Base64 字符串引入额外(可逆)熵?