应不应该把主键 id 暴露在 url 上?

felix9ia · 4 小时前 · 722 次点击

想请教一下大家是怎么做的?

比如访问一个电商网站的店铺页面的 url:

方式 1:使用自增的主键 id xxx/shop/123

方式 2:使用雪花主键 id 或者 guid

xxx/shop/1881238297653633026

xxx/shop/85d93ea0-3d43-48c5-99ec-e11f54655228

方式 3: 使用业务编号

xxx/shop/st_003

方式 4:

用 sqids 把所有的实体主键 id(private_id) 在转换 VO 时加盐转换成 (public_id) 返回给前端

相关讨论: https://www.reddit.com/r/csharp/comments/rg7xob/is_it_bad_to_expose_primary_key_to_the_user_if/

举报· 722 次点击
登录 注册 站外分享
6 条回复  
Rickkkkkkk 初学 4 小时前
不是自增的就行
javalaw2010 小成 4 小时前
在绝大部分场景下,我推崇方案 1 ,如果有产品端/安全端的特殊需求,我会考虑方案 3 ,只有再极少数场景下,比如日志追踪等,我会考虑 2
javalaw2010 小成 4 小时前
@javalaw2010 原贴编辑过了吗?我这里的方案 3 指的是加盐,方案 2 指的是 uuid
laobobo 小成 4 小时前
我(前端)做过的功能,后端给几乎都是用的自增 ID ,极少数场景才会用 2 ,其他目前没遇到
felix9ia 楼主 初学 4 小时前
@javalaw2010 是的,不好意思,我刚刚改了一下。 其实方案 1 的自增有明显的缺陷,不应该被推荐把? 用 sqids 加盐我觉得也是少数场景,比如用户主页这种。
CHTuring 小成 4 小时前
2 就够用了,还是像楼上说的,只要不是自增就行了。
返回顶部