起源
2019年年会的到来,当然免不了激动人心的抽奖环节啦,那直接延用上一年的抽奖程序吧,然而Boss希望今年的抽奖程序能够能让所有人都参与进来,一起来抢有限奖品,先到先得,而不是站在那里盯着屏幕。
OK,程序内容大概是这样子,每个人在手机浏览器打开抽奖程序界面,系统会随机给个数字,谁戳屏幕上的圆形最快最准,就能参与抽奖活动,有多少奖品就有多少场battle(仅限手机浏览器打开 & 每人仅限获得一个奖品)
重要的是,年会之前得把程序公布出来,让其他同事想办法作弊,硬件作弊和软件作弊都允许,我们主要分析软件作弊并制定对应防御策略,就像是一场CTF,对方是攻击,我们是防御。
本文有引用他人文章,若有侵权或其它不当,会立即删除。
开发过程
我跟另一个同事完成这个项目,他负责后端,我负责前端,整体采用React+Nodejs+Express+MySQL的架构,这个项目有实时的需求,因此我们用到了socket.io
首先,我们分析了对方作弊的可能:
通过抓包分析,成功伪造点击请求
找到圆形位置,实现高准确率的点击
搞垮其他竞赛者的账号,自己稳步前进
直接搞掉服