1
hu5ky 2019-03-02 11:08:39 +08:00 via Android
加密
|
2
lhx2008 2019-03-02 11:08:48 +08:00 via Android
前面递增,后面加一个 4-8 位随机值就 ok
|
3
rochek 2019-03-02 11:09:02 +08:00
防穷举?
那么为何一定要用数字 英文字符,标点都加上去 |
4
phy25 2019-03-02 11:11:41 +08:00 via Android
|
5
phy25 2019-03-02 11:13:15 +08:00 via Android
好吧,没有仔细看要求……不过上面的库的介绍提到了 If you need your ids to consist of only numbers, check out Optimus. It's based on Knuth's integer hash method and produces obfuscated integer ids (and does it faster too). There are PHP and Go implementations.
|
6
loading 2019-03-02 11:23:23 +08:00
不如用大质数?哈哈
参考 fail2ban 策略。 |
7
gleox 2019-03-02 11:25:40 +08:00 1
试试[snowflake]( https://github.com/twitter-archive/snowflake/tree/snowflake-2010)
|
8
smallthing 2019-03-02 11:26:14 +08:00 via iPhone
不懂,还不是能穷举吗
|
9
xiaopc 2019-03-02 11:43:16 +08:00 via Android
是防遍历还是防被找出 ID 规律?
|
10
shiyidi 2019-03-02 11:56:51 +08:00
在固定位置加校验位
|
11
qiayue 2019-03-02 11:58:46 +08:00
12 位最大值千亿
依然可以穷举 |
12
asdqaz 2019-03-02 12:10:24 +08:00 via Android
你这不就是激活码吗
看看微软老人家的 25 位激活码 |
14
asdqaz 2019-03-02 12:28:57 +08:00 via Android
哈希函数求值
取前 12 位 防破解加前缀后缀 |
15
xxgirl2 2019-03-02 12:48:59 +08:00
snowflake+1
|
16
MachineSpirit 2019-03-02 12:56:50 +08:00 via Android
倒不如限制访问了,他们穷举肯定要一个一个试的。
|
17
misaka19000 2019-03-02 13:01:20 +08:00
纯数字的话,你这个可选数字太少了,穷举起来很简单
|
18
lihongjie0209 2019-03-02 13:01:41 +08:00
只要是数字,就可以穷举
|
19
binsys 2019-03-02 13:04:08 +08:00
hashid
|
20
niknik 2019-03-02 14:09:12 +08:00
uuid
|
21
janus77 2019-03-02 17:09:11 +08:00
理论上纯数字是不可能防止穷举吧
我能想到的最好办法就是使用不定长的数字,比如有一个是 1,有一个是 451651,有一个是 6168406015 另外重点应该是在被破解的中间途径上加强防护 |
22
siyemiaokube 2019-03-02 18:31:34 +08:00 via iPhone
@janus77 你仔细想想,这只是把 10 个字符变成了不到 11 个字符而已,没什么区别
|
23
DreaMQ 2019-03-02 19:22:14 +08:00 via iPhone
随机不行吗?除非你的用户很多
|
24
superzmy 2019-03-03 03:25:02 +08:00
你需要一个映射函数,把实数空间 A 映射到 实数空间 B,具体做法可以用一个数用各种不同进制的混合表示,然后交换他们的位置。
简单来说 12345 这个十进制,交换百位和十位,可以映射为 12435。 在上述这种方案上叠加不同进制,再加入各种循环偏移量,你就得到一个不好破译的映射算法。这个算法写在服务端生成 id 号的地方,服务端内部有个普通自然数自增量,通过这个映射函数生成用户 id,这个 id 就会非常没有规律性。 |
25
msg7086 2019-03-03 11:53:57 +08:00
穷举本来就是最后一种方法,哪有防穷举这种东西。
比如我问你,我一年工资多少钱,精确到分。于是你从 0.01 开始穷举,一路往上到几百,几千,几万,总有一天能穷举出正确答案的。 你说的可能是防规律遍历。 |
26
atcdef 2019-03-03 15:51:21 +08:00
楼上说得有道理,穷举这事根本不能防,这本来就是最简单最有效的办法,只是时间问题而已。所以你要防的是怎么才能禁止别人多次尝试,比如强制每 ip 每 5 秒钟只能试一次之类的
|
27
linpf 2019-03-09 22:30:31 +08:00
参考最近雪碧活动生成的随机地址, 长度如果不能拉长,那么就连:#_这种符号都算有效字符。
|