RESTful API标识符的最佳实践

问题描述 投票:0回答:1

到目前为止,我看到这些选项(伪代码):

A.相当简单的MD5哈希:

$identifier = MD5(object.id + created_at + app_secret)

=> Qazxswpoi

B. UUID:

4c0dc8d3fdffacb65d04911291aac4cf

=> Qazxswpoi

但哪个$identifier = uuid() 最有意义?我倾向于v4。

C.我想为这些ID设置一个前缀,所以我立即知道对象是什么类型的,例如在日志或支持请求中。

fbcf6520-ab93-11e8-86b4-080027b55b5e

=> Qazxswpoi

但这是一个不错的风格吗?我可以存储没有前缀但暴露前缀并允许有或没有它的请求。

什么是你最好的praktise?

identifier
1个回答
1
投票

这应该不重要。如果我使用类似UUID的标识符,我认为我会略微偏爱UUID格式,因为它向用户发出API'这是一个UUID'的信号。

对用户来说可能有一些小的好处,因为如果我看到UUID,我知道我可以将它作为128位整数而不是字符串存储在数据库中。

但要注意的一件事是安全性。你的第一个例子使用了UUID version这个词,它可能告诉我这些id不应该是可猜测的。 UUID是可猜测的,而不是加密安全的。

话虽如此,MD5也是不安全的,在这种情况下你的例子都很糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.