6

在基于 REST 的系统上,有哪些“加密”资源 ID 的选项。

例如:

 /client/2

可以在

/client/SOMEHASHKEY

我在想 :

1 - 拥有跟踪资源 ID 及其对应 HASH 的数据库表,并在每个请求中查找它。这显然实现起来似乎很繁重,并且大大增加了服务器的工作量。

2 - 有某种内部加密算法,例如根据资源创建日期、资源 ID 和 base64 创建哈希(显然不是最佳的,但你明白了)

那么这种场景有没有好的做法呢?你会推荐什么 ?

非常感谢

4

1 回答 1

2

如果您的意图是难以猜测客户端 ID,请使用uuids,例如 32 个十六进制字符长的guid,例如 21EC2020-3AEA-1069-A2DD-08002B30309D。

识别域中的实体完全取决于提供 REST 服务的实现。

某些应用程序默认使用 guid 来识别实体。一个很好的例子是lovefilm API

GET /users/9D48675C-096F-11DC-BF5A-88D01745CE5C HTTP/1.1
Host: openapi.lovefilm.com

但是,使用难以猜测的标识符并不能保护您免受未经授权的访问,也不能替代真正的身份验证机制。

于 2013-05-12T01:46:37.067 回答