微信小游戏 API 接口开发安全问题怎么处理?

2016-08-24 10:36:54 +08:00
 xiaoduoduoduo
前两天做的微信小游戏项目。被人一次性用几千个微信号刷走了红包。想问怎么尽量避免这样的问题。之前用的是 MD5 拼接字符串再 MD5 做的验证。已被破解。
4386 次点击
所在节点    微信
56 条回复
xiaoduoduoduo
2016-08-24 13:56:11 +08:00
@williamx 策划。。。完全没有策划的呀。
xiaoduoduoduo
2016-08-24 13:58:10 +08:00
@lavande 额,就是你说的这样子。在考虑哈希加密。看到有一个是加密了一百层的,拖住解析的时间
xiaoduoduoduo
2016-08-24 13:59:55 +08:00
@wz2520020 销售给客户设计的是在游戏第一关以后发红包。开始也考虑过,然后客户那边拿通过方案了。程序不好说什么。尤其是我是个妹子。销售更加不会听我的建议
xiaoduoduoduo
2016-08-24 14:00:16 +08:00
@leehon 有很多合法的账号,拿他没办法
xiaoduoduoduo
2016-08-24 14:11:04 +08:00
@alex321 这个的话不用用的客户公众号授权,用的是我们公司的,也就没有这个关注的态度可言。手机短信验证的钱,客户估计会在乎。一个项目三万二,外加每天几万条的短信。一万的红包。这样做一个月推广。不划算
zhaoxiting1997
2016-08-24 14:15:15 +08:00
@xiaoduoduoduo 同一个路由下 ip 一样有什么问题吗,你就返回一个,此 ip 已领过红包。验证码就是点领红包按钮以后加一个图片验证码啊。
xiaoduoduoduo
2016-08-24 14:21:09 +08:00
哦,意思就是说领取过得 ip 地址都再加上一个验证咯
alex321
2016-08-24 14:25:20 +08:00
@xiaoduoduoduo 没有关注的态度可言?没有关注的状态可言?
那么场景是这么样的?客户是订阅号,你们是服务号。客户是想在自己的订阅号上有个超链接,点进去玩小游戏,然后领红包?然后因为订阅号不能发红包,所以需要通过你们的服务号来做发红包的操作?而订阅号和服务号估计是没有进开放平台,不能用 unionId 来统一标识,只好两边各管各的。

如果排除短信验证的话,我的建议是这么样:订阅号推活动,让用户发送关键字触发获得包含各自 openId 的独立活动链接,点击链接进入活动。这个步骤可以很有效地保证参加活动的用户是关注状态,有吸粉价值,并且能够直接走微信系统做用户相对客户订阅号合法性的有效验证;当用户不是通过关键字触发进来的时候不允许参加活动,提示需要按照指定的流程来进行。
小游戏过第一关,反正就是到了该发红包的时候了,程序生成一个唯一串用来做红包验证,这个也没必要给用户知道。然后,包含这个红包领取串 OAuth 跳转到你们公司的服务号,验证红包领取串的合法性后发红包。

如果这个活动中允许用户分享的话,也很好办,利用你们自己的服务号 js-sdk 去除分享网址中的用户标识就可以了。我们已经做了好多好多这样的事情。。

如果可行,直接把俩公众号放到开放平台,可以用 unionId 来,方便很多了额。话说,我现在就是这么搞的,全公司所有公众号都拉到开放平台了。。
gkiwi
2016-08-24 14:34:50 +08:00
1. 同 IP 领取几率降低,比如同一个 IP ,第一次有 10%几率,第二次有 5%,第三次 2.5%类推;
2. 能领取的,加上验证码:您已经获得 0.5 元,输入以下验证码领取;
xiaoduoduoduo
2016-08-24 15:07:44 +08:00
@alex321 额,这个方法在之后是可以采用的,现在主要问题是直接绕过游戏接口调用的红包接口。他拥有很多合法的 openid 。这个要怎么处理
xiaoduoduoduo
2016-08-24 15:10:20 +08:00
@gkiwi 这个红包是由公众号直接派发的,现在发红包一个按钮调用了两个接口,这样下来的会出调用三个接口的,这样会不会卡
gkiwi
2016-08-24 15:41:14 +08:00
@xiaoduoduoduo 不会的,现在浏览器同域下,并发请求至少 8 个;
即使你是同步处理,也不会慢,三个请求很快,实在慢的话,大不了在请求时候加个 loading.gif
doctli
2016-08-24 15:52:44 +08:00
几千个微信号!
怎么做的
alex321
2016-08-24 16:14:34 +08:00
@xiaoduoduoduo 那就改成我说的形式嘛。。我本身是 PM ,但公司全部的微信开发都是我兼着的,修改这些东西,并不需要多少时间。
如果一定要在现在的基础上调整,因为我并不清楚你们现在的业务表现,按你说是一个按钮调两个接口,我们拆分一下,先调 A ,然后 A 增加领红包的验证串,在 B 中使用;或者干脆点,让用户输入,通过 B 验证?

如果真的有想对你们客户订阅号的合法 openId ,你都是合法的了,谁又能怎么样。。这种情形倒是在那些卖运营商卡的人,手头有大量手机号码资源和短信猫池下会出现。
murusu
2016-08-24 16:26:23 +08:00
策划改改就行了
红包几率获取,游戏可以多次进行,同 id 按获取次数调低几率,同 ip 按获取次数调低几率
xiaoduoduoduo
2016-08-24 16:45:14 +08:00
@gkiwi 微信内置浏览器呢?
xiaoduoduoduo
2016-08-24 16:47:52 +08:00
@doctli 主管告诉我的,注册一堆微信号并不难,重点是刷红包的人,有工具管理这一大堆微信号
xiaoduoduoduo
2016-08-24 16:48:39 +08:00
@alex321 额,反正只求给客户的数据上面好看一点,能加你 QQ 不?我的: 304413139
xiaoduoduoduo
2016-08-24 16:49:21 +08:00
@murusu 红包大小是客户定的,每个微信账号领取一次。都是写死了的
williamx
2016-08-24 17:11:04 +08:00
@xiaoduoduoduo 你们不是专门做游戏的吧?那遇到这种事情是很正常的。请教一下做游戏的呗。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/301396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX