防止app伪造凭证发送信息

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:白伯纯
链接:http://www.zhihu.com/question/29654503/answer/45126552
来源:知乎

简单而直接的答案是: 不可能杜绝,尽量减小影响
Report: Bot traffic is up to 61.5% of all website traffic
2014 Bot Traffic Report: Just the Droids You were Looking for
根据这两篇报道,2013年全球Web流量61.5%是机器人,2014年是56%。

这是一个很有普遍意义的反机器人设计,虽然结果令人失望,但是我们可以从技术角度做一些事情:
0 反作弊策略
最最最重要的!要有反作弊策略,不能只依靠技术手段。这是一个与人斗的过程。
至少你要定义出什么样的行为是机器人,比如每秒30个请求显然不是个真实用户。
1 SSL
先从最简单的入手。用SSL可以杜绝最简单的抓包探测。
2 双向加密
题目中的非对称加密方法。当然别人可以反编译你的客户端,但是要学会反编译,战胜那些混淆代码的工具,需要比较高的专业技能。
3 第三方认证
目前手机是没有,但是XBOX和PS都有。只要这些第三方平台没有被破解,你就可以通过服务器间通讯获得可靠的用户信息。
其实苹果的DeviceToken就是这个东西,但是它没有提供接口让你验证合法性,就等于没有了。

除了技术手段以外,更重要的是运营策略:
1 利益是源头
别人调你的API一定是有用,如果是游戏一般都是刷金币对吧。你控制不要刷出来,自然就没有人刷了。
2 关闭交易通道
攻击你的人一定要有经济利益才会持续的投入,否则就是玩玩。不要让他们赚到钱,就像魔兽世界一样把刷金币和买金币的账号都封掉。这是从制度上消灭它的利益。
3 提高成本
再严密都会有疏漏,比如你的反作弊策略只能覆盖70%的BOT,另外30%的收益依然可能大于成本。这时候可以提高创建新用户的成本,比如第三方硬件平台其实就是一种,你也可以对每个新建的账号收费,收到超过它的平衡点就自然会退出了。

------------------------------------------------------------------------------------------------
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:Brian
链接:http://www.zhihu.com/question/29654503/answer/74802462
来源:知乎

在软件上,类似发送短信验证码这样的无法加上用户身份认证的接口,如何防御攻击呢?
1、不能完全杜绝,至少攻击者只要拿到你的app(这个简直是一定的),任何算法都会失效。
2、不是所有的攻击者都会反编译和找到你的防御逻辑。对于这种人,给接口加一个简单的签名是非常有效的办法。签名算法也不需要很复杂, 手机号加上一个固定的密码做个MD5即可 100%防御抓包破解,不需要ssl,也不需要设计复杂的加密算法。再复杂,哪怕复杂到任何人都看不懂的算法在反编译面前都然并卵。因为对于攻击者来说,不需要懂你的算法,只需要会调用你写的方法就可以了。

我的做法是: 每个接口必须签名,有用户信息的就用用 户ID和用户密码做MD5,用户ID用GUID,因为GUID是无法猜测的,这个很重要;没有用户信息的就用 传入参数之一和预置密码MD5,只要能防抓包就行了。

3、最好每发布一个版本更换一次密码。这也可以搞定一些懒癌患者

4、 如果你的接口仅仅给网站用,就不要把接口暴露在防火墙外面,这才是终极解决方案!不过此方案 不适用App

更多app服务端开发:
http://blog.csdn.net/newjueqi/article/details/44062849


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值