【问题标题】:Any issues about using NEWID() for API key?关于使用 NEWID() 作为 API 密钥的任何问题?
【发布时间】:2011-04-29 08:56:57
【问题描述】:

我正在开发一个使用 SQL Sever 的 NEWID() 生成 API 密钥的小块。密钥将用于访问我们网络应用程序的某些部分,并将通过 URL 传递。创建新的 API 使用者时(在存储过程中)生成密钥。每个消费者的密钥都是唯一的。虽然最初的消费者数量预计会相对较低,但随着时间的推移会增长,但频率相对较低。

一些限制是:

  • 必须在插入级别生成密钥
  • 对于每个消费者必须是唯一的
  • 一如既往,性能很重要


这种方法是否存在任何问题 - 安全性、性能或其他?有没有更好的方法来达到同样的效果?

【问题讨论】:

  • 谢谢大家。看起来我可能“过度思考”了这个问题。

标签: sql-server tsql newid


【解决方案1】:

这应该没有问题。 NEWID() 生成一个 GUID,保证在您的系统上是唯一的。

您不应该使用 NEWSEQUENTIALID(),因为它很容易被猜到,如 here 所述,但 NEWID() 的文档中没有给出警告,所以我认为它没有同样的问题。这意味着不应该存在安全问题。

在性能方面,密钥的初始生成可能比其他一些方法花费更长的时间,但保证的唯一性弥补了这一点。如果您为列编制索引,查找也应该很快。

【讨论】:

  • MSDN 经常是不完整的;此外,我不希望任何输出不能用作安全密钥的函数提及这一事实。
【解决方案2】:

我已经这样做了,没有任何问题。 INSERT 是一个比较昂贵的操作,NEWID() 的开销比较小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多