2

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

一些限制是:

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


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

4

2 回答 2

1

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

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

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

于 2010-10-22T20:17:42.950 回答
0

我已经这样做了,没有任何问题。INSERT是一个相对昂贵的操作,的开销NEWID()是相对微不足道的。

于 2010-10-22T20:20:14.847 回答