设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

大前端时代安全性如何做(10)

发布时间:2019-01-22 05:05 所属栏目:20 来源:fantasticbaby
导读:App 端安全的解决方案 目前 App 的网络通信基本都是用 HTTPS 的服务,但是随便一个抓包工具都是可以看到 HTTPS 接口的详细数据,为了做到防止抓包和无法模拟接口的情况,我们采取以下措施: 中间人盗用数据,我们可

App 端安全的解决方案

  • 目前 App 的网络通信基本都是用 HTTPS 的服务,但是随便一个抓包工具都是可以看到 HTTPS 接口的详细数据,为了做到防止抓包和无法模拟接口的情况,我们采取以下措施:
  1. 中间人盗用数据,我们可以采取 HTTPS 证书的双向认证,这样子实现的效果就是中间人在开启抓包软件分析 App 的网络请求的时候,网络会自动断掉,无法查看分析请求的情况
  2. 对于防止用户模仿我们的请求再次发起请求,我们可以采用 「防重放策略」,用户再也无法模仿我们的请求,再次去获取数据了。
  3. 对于 App 内的 H5 资源,反爬虫方案可以采用上面的解决方案,H5 内部的网络请求可以通过 Hybrid 层让 Native 的能力去完成网络请求,完成之后将数据回调给 JS。这么做的目的是往往我们的 Native 层有完善的账号体系和网络层以及良好的安全策略、鉴权体系等等。
  4. 后期会讨论 App 安全性的更深层次玩法,比如从逆向的角度出发如何保护 App 的安全性。

关于 Hybrid 的更多内容,可以看看这篇文章 Awesome Hybrid

  • 比如 JS 需要发起一个网络请求,那么按照上面将网络请求让 Native 去完成,然后回调给 JS
  1. var requestObject = { 
  2.   url: arg.Api + "SearchInfo/getLawsInfo", 
  3.   params: requestparams, 
  4.   Hybrid_Request_Method: 0 
  5. }; 
  6. requestHybrid({ 
  7.   tagname: 'NativeRequest', 
  8.   param: requestObject, 
  9.   encryption: 1, 
  10.   callback: function (data) { 
  11.     renderUI(data); 
  12.   } 
  13. }) 

Native 代码(iOS为例)

  1. [self.bridge registerHandler:@"NativeRequest" handler:^(id data, WVJBResponseCallback responseCallback) { 
  2.        
  3.     NSAssert([data isKindOfClass:[NSDictionary class]], @"H5 端不按套路"); 
  4.     if ([data isKindOfClass:[NSDictionary class]]) { 
  5.          
  6.         NSDictionary *dict = (NSDictionary *)data; 
  7.         RequestModel *requestModel = [RequestModel yy_modelWithJSON:dict]; 
  8.         NSAssert( (requestModel.Hybrid_Request_Method == Hybrid_Request_Method_Post) || (requestModel.Hybrid_Request_Method == Hybrid_Request_Method_Get ), @"H5 端不按套路"); 
  9.          
  10.         [HybridRequest requestWithNative:requestModel hybridRequestSuccess:^(id responseObject) { 
  11.              
  12.             NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil]; 
  13.             responseCallback([self convertToJsonData:@{@"success":@"1",@"data":json}]); 
  14.              
  15.         } hybridRequestfail:^{ 
  16.              
  17.             LBPLog(@"H5 call Native`s request failed"); 
  18.             responseCallback([self convertToJsonData:@{@"success":@"0",@"data":@""}]); 
  19.         }]; 
  20.     } 
  21. }]; 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读