Django 中的独特整数主键:在不牺牲速度的情况下实现机密性
暴露的主键可能会带来安全问题。为了解决这个问题,开发人员经常寻求用不易猜测或枚举的唯一整数替换默认的自动递增主键。虽然对原始密钥进行哈希处理是一种常见的解决方案,但它会带来性能开销,并且每次访问密钥时都需要进行转换。
在本文中,我们提出了一种受 Instagram 方法启发的替代方法。我们的解决方案生成满足以下条件的唯一整数键:
实现
生成 ID:
START_TIME = <unix timestamp constant> def make_id(): t = int(time.time()*1000) - START_TIME u = random.SystemRandom().getrandbits(23) id = (t << 23 ) | u return id
模型:
class MyClass(models.Model): id = models.BigIntegerField(default = fields.make_id, primary_key=True)
优点
这种方法有效解决了在满足特定要求的同时提出的问题唯一的整数主键,而不影响性能或存储效率。
以上是如何在 Django 中生成机密、可排序且紧凑的唯一整数主键?的详细内容。更多信息请关注PHP中文网其他相关文章!