我需要生成一个一次性使用的 URL,它应该具有以下功能:
- 由于 URL 查询参数可能包含敏感信息,因此应该对其进行加密(在加密之上
https
)。 - 一旦使用,该 URL 将无法再次使用。
- URL 会在一定时间后自动过期。
- 管理员应该可以撤销有效的 URL。如果用户稍后尝试使用此 URL,他应该会看到相应的错误消息。
为此,我可以想到两种高级方法:
- 生成一个随机数作为 URL 的查询参数。将随机数和相应的参数(即真正的查询参数、过期、撤销状态、使用状态)存储在数据库中。当用户使用 URL 时,请检查所有必需的前置条件并将其标记为已使用,然后再提供真正的查询参数。
- 嵌入真实的查询参数和过期时间戳作为 URL 的查询参数。使用 AES256 等算法加密 URL。但是,我仍然需要将 URL 存储在数据库中,以便提供撤销功能。
基于上述,我倾向于选项 1,因为所有逻辑都在一个地方,而且看起来更安全。是否有任何行业最佳实践来处理此类问题?
如果重要的话,这将是托管在 IIS 上的基于 REST 的 Web 服务。