优质标识符的设计与实现
1. 优质标识符的特性
在设计标识符时,有几个关键特性需要考虑:
- 选择效率 :选择标识符的方法应快速且简单,并且具有可预测的性能。随机选择标识符虽然可行,但效率不高,且随着时间推移会变得越来越慢。
- 不可预测性 :标识符应难以被预测,这对于安全至关重要。如果选择标识符的方法过于简单,如按顺序选择数字,攻击者更容易找到并利用潜在的安全漏洞。例如,在256位整数的随机分配密钥空间中,随机探测未受保护资源的概率很小;但如果按顺序计数,攻击者几乎肯定能找到存在的资源,甚至可能找到配置错误的资源。
- 可读性、可共享性和可验证性 :标识符可能需要通过电话、短信等非计算媒介进行交流,因此应避免使用容易混淆的字符,如数字1、小写字母l、大写字母I和竖线字符|。此外,一个好的标识符应能让我们快速判断其是否被错误复制。可以通过在标识符中包含校验和段来实现这一点,就像书籍的ISBN一样,其最后一位数字用于验证其他数字是否正确。
- 信息密度 :由于标识符会经常使用,因此大小和空间效率很重要。应尽量在尽可能短的值中打包更多信息,例如选择更密集的字符集(如Base64)而不是较不密集的字符集(如简单数字)。但在优化信息密度时,需要与其他特性进行平衡,因为Base64中的一些字符(如小写i、大写I和数字1)在书写或阅读时容易混淆。
2. 优质标识符的设计
2.1 数据类型
在存储标识符时,字符串是最通用的选择。它具有最高的信息密度(在HTTP中每个字符有7位熵
超级会员免费看
订阅专栏 解锁全文
4296

被折叠的 条评论
为什么被折叠?



