我正在开发一个小块,它将使用SQL Sever的NEWID()生成API密钥。该密钥将用于访问我们的Web应用程序的某些部分,并将通过URL传递。在创建新的API使用者时(在存储过程中)生成密钥。关键是每个消费者都是独一无二的。虽然预计消费者的初始数量相对较低,但随着时间的推移,消费者的数量会增长,但频率相对较低。
一些限制因素是:
这种方法有任何问题 - 安全性,性能还是其他?有没有更好的方法来实现相同的结果?
答案 0 :(得分:1)
这应该没有问题。 NEWID()
生成的GUID保证在您的系统中是唯一的。
你不应该使用NEWSEQUENTIALID(),因为它很容易猜到,如here所述,但是在NEWID()的文档中没有给出警告,所以我认为它没有相同的问题。这意味着不应该存在安全问题。
至于性能,初始生成密钥可能需要比其他一些方法更长的时间,但保证的唯一性弥补了它。如果索引列,查找也应该很快。
答案 1 :(得分:0)
我没有遇到任何问题。 INSERT
是一项相对昂贵的操作,NEWID()
的开销相对较小。