撞库通俗点来说是密码破解中的一种方式,比如你在多个平台中均使用的是同一个账户名和密码,如果其中一个平台数据库泄露了,别人就可以通过一些软件,批量式的去测,这个账户和密码在其它平台是否也可以通过,因此就等同于其它平台也泄露了。
在之前的内容中有分享过:
分享:来吧,送你 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)
添加时请备注:简道云
都看到这里了
如果您觉得有用
赞一个呗
赏一个呗
偶会更有动力哈 |