提问

#楼主# 2016-8-7

跳转到指定楼层
去年刚玩微信开发的时候写的东西
==============================分割线===========================
前几天在罗辑思维宁夏会员群里,有个会员发了个投票链接,让我们帮他投个票。

于是便打开了这个链接,原来又是什么萌宝什么什么的。。。

呃,先随便选一个选手看看它的投票是怎么整的

点击“为TA投票”还不能直接投,提示需要先关注公众号才能投票。


这就有意思了,这几天正好玩了玩微信的各种接口,不知道开发这个投票系统的人,他们是如何来做的防作弊。 然后我就关注了这个公众号,点击自定义菜单,然后发来个图文链接。



然后,点击图文再次打开选手的投票页面,呃,又能点击了。


那么问题来了,在这个流程中是如何完成对用户身份识别的。
恰好我电脑也登陆了windows版微信,然后我就在又电脑上点击这个图文消息。

浏览器打开后闪了一下,地址栏有个明显的跳转,眼疾手快截了个屏

0.5秒后跳转到投票活动的首页。

好吧,看到这里已经明白了,set cookie和openid这个字眼的出现, 已经是说明了它的验证方法。(openid为微信公众号对于微信用户的唯一标识)举个栗子。

A是公众号B是个人微信号,然后B知道A的真实身份,但是由于要保护普通用户隐私,所以A不能看见B的真实身份。在A的眼中B就是由openid标识出来的用户,比如oShCcuJsdfsdPsqiRUfj3wwb8KNA就是我的微信号在中信银行公众号的唯一标识)

了解了标识用户身份的方法,接下来就是如何利用。刚刚看到的set cookies的出现,于是猜测那个跳转页面可能是将openid写入了cookies,查询果然

好了,现在已经完全了解它的验证机制了,这里系统犯了两个错误(也不是错误,就是bug), 一是用URL传递重要变量(就是在链接中出现的zx_openid=oShCcuJsdfsdPsqiRUfj3wwb8KNA)直接将获取到的用户openid代入了URL中,这就使得可以从http://nxsh114.com/game/set_cook ... fsdPsqiRUfj3wwb8KNA下手,修改oShCcuJsdfsdPsqiRUfj3wwb8KNA这部分,就可以达到伪造openid重复刷票。另外一个就是使用了cookies来保存openid这个重要变量,在这个投票系统中,openid(识别用户身份)的作用可能并没有多重要,但是一般情况下。openid都是用session存储的,session可以防止用户修改。而存在cookies里,可以通过伪造修改openid来达到以他人身份登陆的效果。
转播转播 分享淘帖
回复

使用道具

5

主题

19

帖子

679

积分

上士

积分
679
沙发
轨道教主 发表于 2016-8-7 20:12:45
支持一下
回复

使用道具 举报

B Color Link Quote Code Smilies
Archiver|手机版|小黑屋|MakerTime 创客时代  
Powered by Discuz! X3.3  © 2001-2017 Comsenz Inc.