使用Hashids来保护数据库中的id

时间:2016-06-03 05:20:44

标签: node.js express hashids

人们从网址获取数据http://domain/api/user/11是数据库中的id(主键)。我们希望避免这种情况,以防止人们检测到ID。

然后我发现Hashids可以将id编码/解码为字符串,网址可能会更改为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}}

id userproject的{​​{1}}应该被编码,没有明确的规则来抽象。

2解码

从db中检索数据时,你必须将字符串解码为id,我认为我们可以在icon_idroute层执行此操作,但是仍然没有明确的规则来制作摘要由于controller可能存在于url或查询参数中,因此可以使用中间件。

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

更新

我正在使用Mysql,并使用sequelzie作为ORM工具。

0 个答案:

没有答案