登录注册
南京邮电大学论坛 > 影音休闲 > 浏览当前帖子 最新帖子进站窗口排行在线会员隐藏左侧栏
从BBIN菠菜API接口谈安全设计
返回本版】  【发表帖子】  【回复帖子 浏览量  1188      回帖数 0
抛物线    等级  ★★

楼主 发表于  2020/7/21 17:23:29    编 辑   

关于菠菜游戏接口的安全设计一直是业界比较关心的一个问题,对于公共类的接口还好一些,一般很少去校验数据的真伪和用户是否是真实的。对于公共类的接口一般需要考虑多人、高频调用时服务器的承载能力。以BBIN菠菜平台合作的经验来看,其强大的互联网技术与客服经验,使得许多平台业主能避开很多网络安全上的风险。
菠菜平台对于大流量的攻击本來就是很难应对的。所以也希望朋友们在选择接口的时候一定要慎選品牌,別當频次过高造成服务器无法承载的时候,游戏平台最后只能面临关闭的结局了。
今天想谈的内容是我以和BBIN宝盈集团合作多年的经验,以及自身运营学习下来的经验,跟大家分享除了接口对于大流量、高频次的调用场景应对外,也讲下如何防止私有数据接口被恶意调用的解决方案。其中大家在网上问的较多的一个问题就是如何防止短信接口被恶意调用。我们知道短信接口不仅关系着用户业务场景的使用,也关系着项目的运营成本,如果被恶意利用,那么不仅会给平台造成一定的经济损失,也会为平台带来名誉上的损失。
第一种解决方法:将短信发送业务根据不同的业务场景进行二次封装,放在公共模块中,在其他业务场景需要时,再在相应的业务场景中验证用户后再调用短信的发送方法。这是一种很多人都在用的,相对来讲这种方法不属于公共接口设计,安全性则根据每一个业务层的判断逻辑决定。
第二种解决方法:将短信发送做成通用接口,然后其他业务层则不需要关心安全问题,只需要在使用短信的时候调用接口进行,方便平台的扩展,易用性很高。
第二种方法我曾请教过BBIN宝盈集团的技术客服,简单来说就是将系统内用户进行归类。大体上可已划分为注册用户和未注册用户。那么在未注册用户的界面如果需要调用短信接口,那么我们只要求调用短信时除了提交发送短信的手机号,业务场景,发送内容(可有可无,我之前做项目中一般都是验证码,所以发送的内容全部集成到短信接口中自动生成而不需要具体的业务层提交发送的验证码内容),最重要的是IP地址。
在业务层首先要获取用户的IP地址,然后判断基于IP地址的Session信息是否存在,如果存在,则在业务层无需任何操作,如果不存在,则将此次IP的会话时间、ip地址、短信接口调用次数(一般为0)等你需要的信息写入Session中。然后在短信接口那里根据业务场景编码,找到提交IP对应的Session信息。然后决定是否执行短信的发送操作。
这样做的好处是用户每次调用该场景下的短信发送接口时,需要建立会话。可以在很大程度上避免简单的接口POST数据提交。
那么对于已注册的用户相对来讲接口的安全性会好做很多,因为这种业务场景下一般都能拿到用户的数据,那么可以控制用户短信的发送频率和最高条数限制。为了接口易用,一般只需要用户提交token和手机号码即可。
当然了如果采用token验证的做法来校验是否是真实用户操作的话,那么token的安全也是至关重要的,尤其是要保证token不被恶意利用。我通常的做法是让这种场景下业务调用接口时上传一个用户的ID,一个经过加密的token,然后在接口中对加密过的token进行二次认证来确保用户信息的安全。
当然任何加密都有被解密的可能,所以一种业务场景下的加密数据尽可能在保障用户良好体验的同时尽快的失效,这个时候即使被破解了,也已经是过期的token了。
如果为了更好的安全体验,也建议大家将网站或系统数据通过SSL加密传输,来防止中间人攻击。以上只是通过自身在与BBIN的菠菜API游戏接入经验中,在平台中关于接口安全的一些思考和实践,相信能给大家一些帮助。

1
表情
所有内容均为会员自愿发表,并不代表本站立场.
©nubbs.com.cn  Processed in 0.27