场景:如何预防外链中的扩展字段被“撞库”

简道云应用场景探索者

 

撞库通俗点来说是密码破解中的一种方式,比如你在多个平台中均使用的是同一个账户名和密码,如果其中一个平台数据库泄露了,别人就可以通过一些软件,批量式的去测,这个账户和密码在其它平台是否也可以通过,因此就等同于其它平台也泄露了。

 

在之前的内容中有分享过:

 

分享:来吧,送你 5000个 扩展字段

https://bbs.fanruan.com/thread-138960-1-1.html

 

案例:【微信增强 + 扩展字段】还可以这么玩儿

https://bbs.fanruan.com/thread-138798-1-1.html

 

案例:巧用微信openid 让你的外链表单也能飞起来

https://bbs.fanruan.com/thread-138345-1-1.html

 

 

过去,在一些场景中,为了使用方便,在使用外链扩展时,扩展字段使用了较为简单的纯数字,那么就会存在仅需要手动更改下编号就可以获取到其它信息的可能。 

 

比如说,将扩展字段“1001”与叫“张三”的微信用户进行了绑定,将“1001”与其它表单的扩展链接再次拼接处理后,就可以制作一个默认属于“张三”的信息页,此时就会存在,访问者如果手动将“1001”改为“1002”或其它,就有可能获取到“李四”、“王五”、“赵六”的信息页。

 

那么问题来了,微信的OpenID是唯一的,直接用它做扩展字段不就好了吗?是可以,但不便于使用,想象一下,这就会形成每一次有新用户或其它类似操作,就需要之后再进行手动添加,毕竟你提前不知道他们的OpenID,故而就有了,将提前设置的扩展字段与OpenID绑定使用的方式。

 

那么,如何预防外链中的扩展字段被“撞库”?

 

可以对“扩展字段”来次二次加工。

 

方法一:直接全部是随机码

使用起来简单,通过 UUID() 函数就可以完成,生成足够量的,批量放进扩展字段中即可。

 

方法二:进行简要的加密

将序号与一组随机字符进行组合,序号保障了唯一性,随机字符保障了不易被破解。

 

方法三:进行更深层的加密

结合一些加密与解密的算法进行,不仅要加密,还要能解密。

 

  

举例如下:

 

本次测试的是类似于方法二与方法三的结合体

16进制序号(5位)+ 拼接符(2位)+ 随机字符(5位)

 

2001  >  0x7d1xx8e2wx

2002  >  0x7d2xxbst4m

2003  >  0x7d3xxknuc1

2004  >  0x7d4xxoqikz

2005  >  0x7d5xxhwefm

2006  >  0x7d6xxa2ybx

2007  >  0x7d7xx2476w

2008  >  0x7d8xx0gef6

2009  >  0x7d9xxyh2td

2010  >  0x7daxxwaudk

 

通过16进制降低序号的易读性,就算是有人手动更改前面的序号,来“撞”,这时通过随机字符进行的二次加密就会产生保障,同时为了以后调用时又可用,在其之间加的有拼接符,截取后又可以换算出常规的10进制序号。

 

测试链接:

https://tnvew1vqtq.jiandaoyun.com/f/6398890d994c2a000aca2f84

 

更多内容:

 

导航:云函数&前端事件 内容集 

汇总:论坛中发表过的所有帖子

 

更多沟通交流可添加微信(zmlnow)

添加时请备注:简道云

 

 

 

都看到这里了

如果您觉得有用

赞一个呗

赏一个呗

偶会更有动力哈

发表于 2022-12-15 06:45:28 发布于APP客户端
好办法
发表于 2022-12-19 18:46:44
大神能否详细说说公式怎么写呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

3回帖数 1关注人数 13306浏览人数
最后回复于:2022-12-21 02:03

返回顶部 返回列表