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

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(使用前将#替换为@)

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

  • 在phonegap中播放本地声音

    我有一个 wav文件在我的www文件夹 我正在使用 jQuery 和以下代码 警报响起 但声音不播放 难道我做错了什么
  • APK META-INF/library_release.kotlin_module 中复制的重复文件

    我最近通过 JitPack 添加了两个 Android 库 但出现以下错误 Duplicate files copied in APK META INF library release kotlin module 我已经清除了缓存 并尝试使
  • Whatsapp 在 Android 中共享音频文件时正在剪切音频文件

    我在共享格式不是 mp3 的音频文件时遇到问题 文件被共享 但长度较短 例如 如果文件有 10 秒 则仅共享 5 秒 如果我使用 mp3 格式 它会完全共享 但其他格式会出现问题 注意 该文件在其他应用程序 如Messenger 中共享没有
  • android - 过度绘制布局允许通过 LinearLayout 进行触摸

    在下面的 UI 中 我将下面的 drabable 覆盖了整个屏幕 LinearLayout 是透明的 并允许其下方的控件可单击或可触摸 基本上我可以滚动此 LinearLayout 下面的列表以及单击控件 我如何禁用它 See attach
  • 如何在 android-studio 0.3.6 中运行 Gradle 1.9?

    我只是花了一些时间尝试将现有的 android studio 项目从 gradle 1 8 迁移到 gradle 1 9 Final 昨天发布 但失败了19th Nov 我在这里阅读了大多数其他与 gradle 相关的帖子 但没有一个对我有
  • Android 上的硬币识别

    我目前正在开发一个 Android 应用程序 它能够拍摄硬币的现有图像 或者使用内置摄像头扫描单个硬币 非常像 Google Goggles 我正在使用 Android 版 OpenCV 我的问题如下 什么方法最适合使用 OpenCV 在
  • 注销时Firebase facebook按钮android身份验证

    我在我的 Android 应用程序中使用 firebase 并在 facebook SDK 中使用登录 我面临的唯一问题是 当我使用 facebook 登录然后注销时 facebook 登录按钮处于 注销 状态 当我单击它时 它会询问我是否
  • 使用 POST 将数据从 Android 发送到 AppEngine Datastore

    抱歉 如果这是一个简单的问题 但我只是不知道我应该做什么 而且我认为我有点超出了我的深度 我想将数据从 Android 应用程序发送到在 Google App Engine 上运行的应用程序 数据必须从那里写入数据存储区 我的数据主要采用对
  • 用于代码生成的 ANTLR 工具版本 4.7.1 与当前运行时版本 4.5.3 不匹配

    我正在开发一个 Android 应用程序 当前使用 DSL 和一些库 突然构建给了我这个错误 任务 app kaptDebugKotlin 失败 用于代码生成的 ANTLR 工具版本 4 7 1 与当前运行时版本 4 5 3 不匹配 用于解
  • ImageButton 拉伸背景图像

    我正在尝试创建一个没有边框的 ImageButton 但遇到了图像按钮大小的问题 我使用 Eclipse ADT 将 ImageButton 拖到布局中并选择背景图像 图像按钮显示如下 正如您所看到的 背景图像和图像按钮周边之间有一个边框
  • 如何使用 onSearchRequested() 调用搜索对话框

    我正在尝试实现搜索对话框 但无法显示活动中的搜索 我在清单文件中定义了主要活动 此活动向用户显示了他们必须从中选择的选项列表 选项之一是 搜索 选项
  • 使用startActivityForResult,如何获取子活动中的requestCode?

    我有四项活动 即 A B C 和 D 我的情况是A将通过startActivityForResult启动活动B startActivityForResult new Intent this B class ONE 在另一种情况下 我将使用不
  • 对基本适配器类及其功能的疑问

    我正在尝试自定义列表视图 我使用数组列表添加对象列表 并将其发送到扩展基本适配器的类 当我扩展基本适配器类时 它实现了一些方法 例如 getView 等 在 getView 中 我将其发送到将名称 数据 分配给 XML 格式的自定义菜单的类
  • MPAndroidChart:组合图表

    我在用MPAndroidChart 库 https github com PhilJay MPAndroidChart 我想用CombinedChart创建这样的图表 那可能吗 我尝试了一下 但似乎不起作用 因为 这些条目没有按我的预期工作
  • 找不到资源矢量绘图的异常

    我将在某些设备上运行我的应用程序 其崩溃日志如下 01 04 16 54 02 206 7466 7466 com lawnmowers E AndroidRuntime FATAL EXCEPTION main Process com l
  • 如何使用asynctask显示倒计时的进度条?

    在我的应用程序中 我希望用户按下按钮 然后等待 5 分钟 我知道这听起来很糟糕 但就这样吧 5 分钟等待期间的剩余时间应显示在进度条中 我使用带有文本视图的 CountDownTimer 来倒计时 但我的老板想要看起来更好的东西 这就是进度
  • 在Android中提取视频帧

    我想知道是否可以从 Android 中正在运行的视频中提取帧 我需要定期提取帧并将其发送以进行进一步处理 有人能为我找到答案吗 Thanks Abhi 您可以使用媒体元数据检索器 http developer android com ref
  • 在android中的日期选择器对话框中显示当前日期

    我多次尝试在日期选择器对话框中显示当前日期 但失败了 它显示 1 1 1990 我已经遵循了堆栈溢出的一些答案 但不幸的是这些对我不起作用 谁能解释一下在日期选择器对话框中显示当前日期的代码 谢谢 It may help you publi
  • 如何手动添加Android Studio依赖

    我多次尝试向我的项目添加依赖项 但每次都会出现错误 我想添加它们的依赖项是 de hdodenhof circleimageview 1 3 0 and com github bumptech glide glide 3 6 1 所以我想下
  • SambaFileInputStream 和 FileInputStream 有什么不同?

    我需要从 samba 服务器流式传输视频 并且我使用 nanohttpd 在我的项目中创建简单的服务器 当我使用本地文件中的 fileinputstream 时 视频视图可以按设置播放视频 http localhost 8080 publi

随机推荐

  • 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无论是在体