数据库 mysql
目前数据库有个自增的数字 id, 但容易被遍历,
出于防止被对手看出动向 等原因
打算在前台输出 userid 和文章 id 的时候, 进行加密
目前打算 保留系统自带的 数字 id, 再额外增加一个 shortuuid 生成的字段,展现给前台用户
https://github.com/skorokithakis/shortuuid
大家觉得这个方案如何?
有没有更好的方案
比较追求性能、扩展性、安全性、性价比
|  |      1crysislinux      2018-02-17 19:16:38 +08:00  1 可以只用 slug,禁止 id 直接访问。 | 
|      2night98      2018-02-17 19:19:22 +08:00 via Android  1 文章 id+uuid 的 sha1 值也可以,同时保存在数据库即可。 | 
|  |      3MiffyLiye      2018-02-17 19:23:14 +08:00  1 无序的 uuid 对数据库索引不友好,可以试试趋势有序的 snowflake https://github.com/MiffyLiye/Snowflake | 
|      4find456789 OP | 
|      5find456789 OP | 
|  |      6geelaw      2018-02-17 20:07:51 +08:00  1 阻止遍历的最简单想法是这样做:使用自增的 id,并在 URL 上附加一个对该 id 的数字签名。 | 
|  |      7MiffyLiye      2018-02-17 20:12:52 +08:00  1 @find456789 可以分布式使用,我已经用上了其实。有其他问题,但是大部分问题在低频率创建(<4096 requests per 100 ms )时不太会遇到。 https://bitbucket.org/MiffyLiye/miffy/src 以上 repo 公开 24 小时 | 
|  |      8tscat      2018-02-17 20:44:46 +08:00 via Android  1 可以做蜜罐吧。部分 id 不对外公开,一旦访问直接 ban ip。 | 
|  |      9lyc9308      2018-02-17 20:46:41 +08:00 via Android  1 对 id 做一下编码成本也很低啊 | 
|  |      10ryd994      2018-02-17 22:38:06 +08:00 via Android  1 | 
|  |      11msg7086      2018-02-18 03:10:02 +08:00  1 | 
|  |      12imzoke      2018-02-18 04:08:03 +08:00 via Android  3 使用 hashids 吧 http://hashids.org | 
|      13honeycomb      2018-02-18 18:52:20 +08:00 via Android  1 @find456789  snowflake,或者你按照它的原理写个变形。 如果是 hibernate/jpa,直接把它作为 generator 就可以。 不过 snowflake 这种 ID 生成方式会携带明确且准确的时间戳,不一定适用。 |