1

人们从 url like 获取数据,http://domain/api/user/1并且1id数据库中的(主键)。我们希望避免这种情况,以防止人们检测到 id。

然后我发现可以将 id 编码/解码为字符串的Hashids,url 可能会更改为http://domain/api/user/D42dhDLdk

乍一看这是一个很棒的解决方案,但是如何在实际应用中使用它呢?

1个编码

当从数据库中检索记录时,我们应该将 id 编码为字符串,这是做这项工作的正确位置吗?我能想到的唯一正确的地方是记录的反序列化,例如,当您提供 的数据时json,您可以对相关ids字符串进行编码,但您必须确保应该对哪些字段进行编码。

例如:

{user:{id:1,name:'xx',projects:[{id:1,name:'p1',id:2,name:'p2'}]},icon_id:1}}

the idof theuser project和 theicon_id应该被编码,没有明确的规则来抽象它。

2 解码

从 db 检索数据时,您必须将字符串解码为 id,我认为我们可以在routeorcontroller层执行此操作,但是仍然没有明确的规则来制作抽象中间件来处理此问题,因为encoded stringurl 或查询参数。

我没有从谷歌找到任何通用的解决方案,所以我想知道你是如何处理这种问题的?


更新:

我正在使用 Mysql,并使用带有 sequelzie 的 Express 作为 ORM 工具。

4

0 回答 0