假设我经营一个网站,您可以在其中创建猫图片。我给每张猫的照片一个唯一的标识符,以便它可以在社交媒体上与http://catpictures.com/base62Identifier
.
我可以为猫图片提供顺序标识符,例如 1、2、3 等,但随后可以轻松发现用户每天创建多少新猫图片(通过每天返回 HTTP 200 的最大标识符)。这让我了解了每月从竞争对手那里订购一次产品并记下发票编号的常见策略。网站流量数据与业务收入密切相关,因此我显然希望对这些信息保密。
我正在考虑尝试:
这听起来像是散列算法的工作,对吧?问题在于通过观察哈希很容易判断是哪个算法创建了它(md5、crc32 等)。有彩虹桌的人会很快完成这个想法。我可以对标识符 [hash("salt"+1), hash("salt"+2), ...] 加盐,但随后将不得不担心与盐相关的安全性。和碰撞检查。
我的另一个想法是生成一个随机字符串并将其用作数据库中猫图片的主键(或者我可以散列猫图片数据的前 n 位)。这样我只需要检查碰撞。
是否有一种标准的最佳实践方法可以避免通过您的唯一标识符 URL 暴露您的流量?
编辑:我正在专门寻找一种将安全性和适用性完美结合为数据库主键或可索引列的解决方案。