3分钟2个接口掌握游戏盾SDK接入

  1. 云栖社区>
  2. 博客>
  3. 正文

3分钟2个接口掌握游戏盾SDK接入

gameshield 2019-02-13 16:38:49 浏览3727
展开阅读全文

阿里云游戏盾是面向移动APP用户推出的高度可定制的网络安全解决方案,本方案中通过SDK的集成可以实现DDoS攻击的免疫和CC攻击的100%解决。



游戏盾目前在实际使用中可以达到的效果如下:

1、DDoS攻击防御可主动定位/隔离攻击者

   游戏盾通过大量的节点部署结合SDK的调度数据,在发生DDoS攻击的时候能够准确告知您目前你游戏中的哪一个玩家ID、IP、设备号是恶意玩家,并进行主动隔离,您还可以跟具这些调度日志进行进行报案处理,对黑客进行有效的打击。 

    

    可溯源是游戏盾最核心的优势,游戏盾具备对抗DDoS攻击的【反击】能力!

    实际案例可以参考:>>>一位运维工程师亲身经历的“DDoS追凶”实录<<<


2、CC攻击防御100%解决,0误杀、0漏过

    CC攻击一直是难以解决的行业痛点,在传统的高防IP、WAF模式下总会碰到误杀、漏过的问题,碰到协议模拟类的攻击更是束手无策,对业务稳定性影响非常大。游戏盾的私有通信协议彻底改变了这一现状,通过动态的加密算法,每次数据传输都具备唯一性,只有干净的流量才能够到达您的业务服务器,0误杀、0漏过。


3、防御成本大幅度降低90%

    传统高防抵御T级别的DDoS攻击都在50万/月以上,对中小型的公司来说都是无法承受的,目前游戏盾推出了针对流量/日活计费的方式,不论您的业务规模大小,只要接入游戏盾的SDK,游戏盾都给您提供不设上限的攻击防御能力来保障您的业务,仅需6.5万/月起!降低防御成本90%以上!(立即申请接入


一、核心原理


通过服务SDK提供的服务本地化接口,将任意IP、端口的服务本地化,并且由SDK接管所有的通信流量,进行调度和加密传输,满足抗D、防C、流量加密等业务需求。


84f73ecf09510afe0bf247e7be7d2edf206686ba
安全防御模式:每次连接远端的IP:PORT前,调用一次服务本地化接口,将服务本地化,后续使用返回的IP:PORT进行使用即可。

在访问原服务器前的流程变化如下:

原:客户端获取服务端IP和端口——>连接服务端
新:客户端调用SDK获取游戏盾IP和端口——->连接游戏盾IP和端口——>服务端

014d4d48ac4758927aa4e99a82f89390ded4251f

必须完整使用游戏盾返回的IP和端口,游戏盾返回的IP和端口示例如下:

游戏盾无限抗安全接入模式: 127.0.0.1  56382 (安全接入模式,端口随机)

注意:游戏盾模式返回的是本地local地址和随机端口,且端口具备一定的时效性(参考FAQ-3、完善心跳机制来适配)。

二、实例代码





String token    =  "UserId";   // 游戏内的玩家唯一ID,如果获取不到,可以传入一个默认值,定位恶意攻击者使用
String groupname = "Default.iE0454968L.ftnormal03ae.com"    //游戏盾防御分组配置页面获取,一个游戏一个

//初始化
String appkey = "xxxxx";   //控制台获取
int ret       = YunCeng.initEx(appkey, token);  //这个接口只需要调用一次,重复调用无效
String s      = Integer.toString(ret);  //s如果不等于0、游戏盾初始化失败

//华丽丽的分割线
//以下为TCP业务接入实例
//假设原业务为 tcp://121.35.123.21:8009

//基础参数,通过XX游戏的入口、接入XX服务器的XX端口
String dip = "gameserver-for-yxd.vivre.cn"  //需要在游戏盾无限抗防护目标中进行配置,对应的真实服务器为121.35.123.21
String dport = "8009"       //根据实际需要进行传入服务器的真实业务端口

//返回参数
StringBuffer target_ip = new StringBuffer();
StringBuffer target_port = new StringBuffer();

//核心转化接口调用,此函数为游戏盾的核心函数
int ret = YunCeng.getProxyTcpByDomain(token, groupname, dip, dport, target_ip, target_port);

//调用结果,如果范围非0则为调用失败,可以一直重试
String s=Integer.toString(ret);

//打印输出
msg_show.setText(s + "   result ip:" + target_ip.toString() + ", port:" + target_port.toString());

//经过游戏盾转化后的IP和端口,使用此IP和端口进行实际业务链接
g_dip = target_ip.toString();  //游戏盾转化后的IP
g_dport = target_port.toString();  //游戏盾转化后的Port

//华丽丽的分割线

//以下为HTTP(S)协议的游戏盾接入实例
//假设原业务访问地址为http(s)://login.vivre.cn/loging

String dip = "login-for-yxd.vivre.cn"  //需要在游戏盾无限抗防护目标中进行配置,且将login-for-yxd.vivre.cn的DNS配置解析为127.0.0.1
String dport = "80"       //HTTP业务为80、HTTPS业务为443、或者您实际的端口,例如 http://login.vivre.cn:8080/login

//返回参数
StringBuffer target_ip = new StringBuffer();
StringBuffer target_port = new StringBuffer();

//核心转化接口调用,此函数为游戏盾的核心函数
int ret = YunCeng.getProxyTcpByDomain(token, groupname, dip, dport, target_ip, target_port);

//调用结果,如果范围非0则为调用失败,可以一直重试
String s=Integer.toString(ret);

//打印输出
msg_show.setText("http(s)://login.vivre.cn --> http(s)://" + dip.toString() + ":" + target_port.toString());

//那么如何访问呢,拿到游戏盾返回的Port,并且和域名login-for-yxd.vivre.cn进行拼接
//http(s)://login-for-yxd.vivre.cn:48201/login 就等于是  http(s)://login.vivre.cn/loging 
//仅限当前客户端本地!!跨设备无效! 
//可以解决HTTPS证书校验问题 
//假设游戏盾故障,可以秒级切换到源服务 





第一次调用需要300MS,结果缓存以后再次调用仅需要3MS,由本地直接返回。


三、相关问题FAQ


1、init接口在什么时候进行调用?能重复调用吗?
建议在游戏初始化的时候进行调用,不需要重复调用,仅需要调用一次。

2、如何判断游戏盾异常?
>Init如果返回非0,代表此用户调用游戏盾失败,可以走失败逻辑。(判断游戏盾失效的唯一方式)
>getProxyTcpByDomain接口如果返回非0,仅代表此用户本次请求调用游戏盾失败,仅需多次尝试,尝试失败后提示客户关闭/重新进入游戏,尝试重启游戏进行判断。

3、DDoS攻击会导致节点黑洞,玩家掉线,如何快速、准确的检查到业务异常?
此问题必须通过心跳检查机制进行识别建议值为检查间隔3-5秒,检查到2次异常即走掉线重连逻辑,重新调用游戏盾。
***因为DDoS攻击导致的TCP协议异常在安卓、IOS等环境下的差异性不一定会被异常捕获,心跳检查是最保险的机制。

4、如何验证游戏盾接入后的效果?
在游戏盾版本完成开发后,请务必联系游戏盾团队进行DDoS攻击的模拟测试,来验证策略的有效性,保证接入的防护效果。

5、IOS的IPV6过审核支持吗?
支持的,您的业务不需要做兼容,游戏盾主动帮你完成了IPV6兼容,可以过审核。

6、真实IP的获取如何解决?
Linux:无需代码集成,请提供uname –a 的命令输出,在联系我们获取对应的内核模块。
Windows:需要代码集成,联系我们获取相关功能代码。

7、客户端上的HTTP(S)类业务(充值接口、HTTPAPI类)如何优雅的接入游戏盾?
参考:https://help.aliyun.com/document_detail/93282.html
客户端内的充值接口也可以完美接入游戏盾哦!!

8、主要适应客户,和场景
棋牌类、比特币交易所类、直播类等安全需求较高的APP类业务等。


网友评论

登录后评论
0/500
评论
gameshield
+ 关注