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中文網其他相關文章!