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

2023-11-15

前言:

这两年移动端开发的热度明显不如前几年,而且混合式开发框架诸如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,把相关鉴权信息带上,鉴权通过了才会发送呼叫。根据这种原理,我们的多伦会话请求的基本思路是,第一次请求带上需要操作的相关信息,收到服务回的相关信息,根据相同规则,生成加密串,再重复提交,后端校验,然后进行后续操作。

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

具体流程如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动端开发同后端交互安全机制记录 的相关文章

  • Android上如何模拟后台Activity因内存不足而被系统杀死的过程?

    我正在处理 内存不足 不再有后台进程 问题 当这种情况发生时 我的活动处于后台并被杀死 我正在尝试保存并加载实例状态来解决它 但因为它并不是每次都会发生 在这种情况下我应该如何测试我的活动 Thanks 您可以通过 adb 强制进程终止 g
  • Android 应用程序在启动时打开应用程序信息屏幕,而不是启动主 Activity

    我不确定这是否是一个问题 但这是我第一次遇到这个问题 我正在开发一个应用程序 当我在进行一些编码后断开应用程序与 Android Studio 和 PC 的连接时 如果我尝试在手机上打开应用程序 它会启动app info屏幕 我们看到强制停
  • API29 上不推荐使用 setColorFilter

    我使用以下行来更改 VectorDrawable 的颜色 mydrawable getBackground setColorFilter color PorterDuff Mode SRC ATOP 这很好用 尽管它现在已被弃用 文档建议我
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • Google 地图删除标记路线上下文菜单

    我使用 Android Studio 的 Google 地图模板启动了一个新项目 并在地图上添加了一个标记 LatLng location new LatLng lat lng Marker marker mMap addMarker ne
  • 具有自定义源集的 Android Gradle 风格 - gradle 文件应该是什么样子?

    我有一个旧的 eclipse 项目 我已经转移到 android studio 并设置为使用flavor 它似乎工作得很好 直到我开始尝试在我的风格之间使用不同的 java 文件 我的项目设置是这样的 ProjectRoot acitonb
  • 当不支持 Google Play 应用内结算 V.3 时

    在 Google Play 的应用内结算 V 3 中 有一个选项可以检查用户设备是否支持它 使用是否支持计费 http developer android com google play billing versions html meth
  • Android Fragment onCreateView 与手势

    我正在尝试在片段中使用手势 我在 FragmentActivity 中有以下内容来处理我的详细信息片段 我试图发生的情况是 当在视图上检测到滑动时 将该视图内的数据替换为上一个或下一个条目 如果有更好的方法来处理这个问题 我完全同意 然而
  • 在选项卡上保存数据

    我有 3 个选项卡 每个选项卡都有一个单独的活动 我想在用户单击任一选项卡上的 保存 时保存数据 有几个选项可供选择 共享首选项 全局变量或将对象保存在上下文中 编辑 我必须保存图像和文本字段 Android 共享首选项 https sta
  • 来自相机的 MediaCodec 视频流方向和颜色错误

    我正在尝试流式传输视频捕获直接从相机适用于 Android 设备 到目前为止 我已经能够从 Android 相机捕获每一帧预览帧 byte data Camera camera 函数 对数据进行编码 然后成功解码数据并显示到表面 我用的是安
  • 如何从android中的外部存储中获取所选文件的文件路径?

    我在选择文件的文件路径时遇到问题 我搜索了整个堆栈溢出 但问题没有解决 从设备中选择文件的代码如下所示 Intent intent new Intent Intent ACTION GET CONTENT intent setType in
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • Jetpack 导航:如何从一个嵌套图的子级导航到另一个嵌套图的子级?

    导航结构 MainActivity nav root HomeFragment AuthNestedGraph nav auth BeforeOtpFragment home OtpFragment ProfileNestedGraph n
  • android textview 有字符限制吗?

    我正在尝试在 android TextView 中输入超过 2000 3000 个字符 它不显示任何内容 任何一份指南是否对 android textview 有字符限制或什么 我在G3中做了一些小测试 我发现 如果activtiy布局中有
  • SDK >=26 仍需要 mipmap/ic_launcher.png?

    在 Android 中 有两种指定启动器图标 可以说是应用程序图标 的方法 老 方式 在 mipmap 文件夹中指定不同的 png 文件 通常命名为 ic launcher png 但可以通过以下方式设置名称android icon mip
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • Fragment 生命周期和在不存在的 Fragment 上调用 onCreate 的问题

    我正在 Android 中测试片段 并且片段生命周期有一些令人困惑的行为 我有一个活动 在横向和纵向模式下使用 xml 布局 我有一些代码可以访问在片段布局之一中定义的 EditText 对象 如果我以横向模式启动应用程序 一切都会正常 我

随机推荐

  • python:openpyxl取某一行、某一列、应用excel函数

    前言 话外 如何取某一列这个 真的是气死我气死我气死我拉 依然记录学习使用 属于昨天内容的进阶版 如果想要基础操作 如创建excel 创建sheet 可以点击下方链接哦 python openpyxl基础操作 一 创建 xlsx文件 豆包的
  • sqlserver 2012 出现自增ID跳段试增加,中间却查不出数据?求助大神

    sqlserver 2012 出现自增ID跳段试增加 中间却查不出数据 求助大神 数据由自动采集软件cimplicity采集 自动插入到这个表 这个过程无法进行干预 但是数据库出现采集数据ID自增跳崖试变化 直接由32给干到了1047 中间
  • 面向ad-hoc查询的实时SQL分析系统

    Impala Hive现状分析与前景展望 Impala和Hive野史 提到Impala就不得不提Google的Dremel 处理PB级数据规模的基于SQL的交互式 实时数据分析系统 Dremel是Google推出的PaaS数据分析服务Big
  • 第五章Docker

    文章目录 什么是Docker 应用部署的环境问题 Docker解决依赖兼容问题 Docker解决操作系统环境差异 小结 Docker与虚拟机 Docker架构 镜像和容器 DockerHub Docker架构 安装Docker 卸载 可选
  • 一文通透——Kali Linux基础入门

    学习Kali 郑重声明 此文章可能会包含敏感以及危险的命令 命令有风险 回车需谨慎 此文章仅供学习交流与参考使用 禁止运用于任何非法行动或测试中 若有预期之外的后果 将不承担任何责任 再次进行警告与提醒 root KaLi Erhe cat
  • Apache apisix默认密钥漏洞(CVE-2020-13945)

    目录 漏洞描述 影响版本 漏洞复现 声明 本文仅供学习参考 其中涉及的一切资源均来源于网络 请勿用于任何非法行为 否则您将自行承担相应后果 本人不承担任何法律及连带责任 漏洞描述 Apache APISIX 是一个动态 实时 高性能的 AP
  • tensorflow1.14(一、初识)

    默认图与自定义图 import tensorflow as tf a tf constant 1 b tf constant 3 c tf constant 5 name name1 d tf constant 7 name name1 n
  • 第八讲:神州三层交换机静态路由配置

    静态路由是指由网络管理员手工配置的路由信息 当网络的拓扑结构或链路状态发生变化时 网络管理员需要手工修改路由表中的静态路由信息 静态路由信息在默认情况下不会传递给其他路由器 静态路由一般适用于比较简单的网络环境 静态路由的优点 使用静态路由
  • 使用idea创建java web项目

    创建web项目有很多方法 就说一个最简单的方法吧 创建一个java项目 点击创建 右击项目选择添加框架支持 勾选上web应用程序 点击确定 再点击当前文件 编辑配置 点击加号 选择Tomcat服务器 本地 也可以选择其他服务器 点击配置 选
  • 软件测试知识(二)

    软件开发阶段一般又划分成需求分析 概要设计 详细设计 编码与单元测试 组装与系统测试以及安装与验收等6个阶段 系统测试是将软件系统与硬件 外设和网络等其他因素结合 对整个软件系统进行测试 常见的系统测试主要有恢复测试 安全性测试 强度测试
  • 求解三位正整数各位之和

    描述 从键盘上输入一个三位整数 分别求出其的个位 十位和百位数字 并计算三位数字之和 输出格式 使用 format格式输出 请参阅输入输出示例 n input l list n a 0 for i in l a eval i a print
  • Centos5.8 x86_64下安装DRBD+Heartbeat+NFS

    实验环境 vmware workstation os Centos5 8 x86 64 编辑两台虚拟机分别新增一块网卡作为心跳检测 新增一块4G的硬盘 大小保持一致 两台机器的基本情况如下所示 centos1 mypharma com 19
  • python之路 第三章 逻辑判断语句——布尔类型和比较运算符、if语句、if else、if elif else、嵌套

    目录 第三章 逻辑判断语句 01 布尔类型和比较运算符 02 If语句的基本格式 03 if else语句 04 if elif else组合使用的语法 05 判断语句的嵌套 第三章 逻辑判断语句 01 布尔类型和比较运算符 在生活中 我们
  • Feign接口方法返回值设置

    Feign接口方法返回值设置 一 介绍 随着微服务的广泛应用 越来越多的企业都会使用微服务进行项目开发 在各个服务之间需要通过feign来进行通信 所以在feign调用接口中方法会接受其他服务接口不同类型返回值 二 返回值设置 1 依据被调
  • el-table实现跨页全选

    el table实现跨页全选 在开发中 我们会遇到一些需要全选表格的需求 由于我们使用了后端分页 在选中时需要维护一个数组 便于回写 但是我们有时需要跨页全选 一个按钮选中所有 我们维护的数组如果从后台拿到所有数据去维护的话这样我们的性能就
  • idea中回退git历史版本并删除历史提交记录

    本篇文章主要介绍git在idea中的回退历史版本 适用场景为代码提错分支 正常回退版本都可适用 回退前先检查一下本地分支是否和远程分支对应 否则会失败 1 打开idea中git历史提交窗口 快捷键 alt 9 有改动则是自己改的快捷键 2
  • 逍遙安卓和Charles實現https抓包

    Charles是一款来自国外的非常强大抓包神器 具有十分简洁的界面 直观易用 通过这款软件可以帮助用户方便地进行抓包 它可以轻松记录浏览器和Internet之间的所有流量 是非常专业并基于java开发网络http抓包工具软件 非常适合开发人
  • conda使用详细

    目录 Anaconda环境变量 一 常用命令 1 创建Python虚拟环境 2 切换环境 3 对虚拟环境中安装额外的包 4 关闭虚拟环境 即从当前环境退出返回使用PATH环境中的默认python版本 5 删除虚拟环境 6 克隆虚拟环境 7
  • 教你如何简单的在windows 10使用Debug

    很多有Windows 10 系统的小伙伴都想要学习汇编 那么怎样搭建debug环境好呢 小编发现 很多这种类似的教程都是叫你去安装Dosbox 这就有一篇教你用用这种方法搭建的 但是不好的事那个界面有点让小编看着不舒服 当然你也可以选择使用
  • 移动端开发同后端交互安全机制记录

    前言 这两年移动端开发的热度明显不如前几年 而且混合式开发框架诸如appcan的兴起在一定程度上降低了移动端开发的门槛 而最近更加流行的React开发更是把移动端原生开发的热度拉低很多 基于React Native构建的移动APP无论是在体