移动端开发同后端交互安全机制记录

前言:

这两年移动端开发的热度明显不如前几年,而且混合式开发框架诸如appcan的兴起在一定程度上降低了移动端开发的门槛,而最近更加流行的React开发更是把移动端原生开发的热度拉低很多。基于React Native构建的移动APP无论是在体验还是在速度上都可以同原生APP抗衡。同时互联网巨头提供的移动开发平台以及流量入口的便捷性,也让更多人或者企业放弃开发原生APP,毕竟自己开发同时要开发安卓端又要考虑苹果端,对时间成功以及人力成本都是很大的考验。而诸如微信公众号、微信企业号开发、钉钉开发、支付宝应用开发也越来越流行。

现在的web开发都讲究前后端分类的方式,像前几年用jsp/asp做开发后端进行页面路由,通过session管理用户登录状态的方式,现在已经不再是主流。前端越来越重,处理的逻辑、交互越来越复杂。后端相对却越来越简单和复杂,说简单是业务处理简单,大多数情况下都是做数据的提取并返回到前端即可,说复杂是因为大数据、集群、微服务的兴起,相比以前简单的单应用来说,后端生态框架越来越往集群上转,同时数据的重要性愈发明显。去年做过一个网元分析的项目,后端的核心人员全是数据处理和建模人员,通过对底层信令文件数据的加工、抽取、清洗,一层一层沉淀到上层表,然后web开发仅仅是查询数据库,并提交数据到前端即可。前端根据数据放到各种图形化框架、地图UI组件上去展示。整体来看,早几年开发中重点负责业务逻辑处理的java开发反倒成了最轻松地一环,因为业务逻辑由专门的数据人员通过脚本、定时任务、存储过程去处理,而页面路由,页面数据模型则全部由前端自己处理了。

说到页面路由,最大的感触还是前端技术的日新月异。前几年前端的Jquery可谓是一家独大,几乎很少有听说有所谓的前端框架。但是nodejs出来之后,模块化开发、面向对象方式的js开发、vue/angleJs/react这些前端框架变得越来越流行,单页应用、前端路由这些概念对于前端的开发以及用户体验可谓是颠覆性的。

废话扯了很多,回到主题上来,今天主要记录一下之前做的一个项目中使用到安全校验规则。

需求:

甲方的业务中,有一个功能是在APP上提供两个按钮,点击按钮后,可以对全省的用户进行批量操作。影响范围之广,操作失败后果严重之大显而易见。客户说,这个功能万一被被人恶意使用,后果非常严重。所以要求绝对安全性。

除了本身的权限校验机制外,交互安全也必须全面。

当时提出几个方案:

1.使用https请求,请求加密

2.网络限制,即只有在特定的网络里才能请求这个业务对应的接口

3.多会话式加密请求方式

其中,第一种方案被否定了,因为客户不提供域名,也不提供证书。第二种方式也被否定了,客户说用APP就是要求快捷,你不能要求我只能在公司才可以操作。

最后选择第三种。所谓多会话式加密请求,其实是借鉴的SIP协议在进行呼叫及注册时候的规则,SIP协议在发送INVITE请求时,第一次会收到407鉴权请求,根据服务回的相关信息,按照统加密规则进行加密,然后再次INVITE,把相关鉴权信息带上,鉴权通过了才会发送呼叫。根据这种原理,我们的多伦会话请求的基本思路是,第一次请求带上需要操作的相关信息,收到服务回的相关信息,根据相同规则,生成加密串,再重复提交,后端校验,然后进行后续操作。

那么,这其中的重点就在双方认证的规则。

具体流程如下:

猜你喜欢

转载自blog.csdn.net/liangcha007/article/details/81206825