Android开发技术周报182学习记录

教程

App安全二三事

记录

为什么要安全

App的移动安全主要包括下面几种:

  1. 密钥破解,导致本地加密数据被盗取。
  2. 通信密钥破解,导致接口数据被盗取。
  3. 伪造接口数据上报。
  4. 接口签名被破解,导致接口可以被重放攻击。

归结起来,就是三种模式:

  1. diamante反编译。
  2. so破解。
  3. 中间人攻击。

用户要的安全

对于用户来说,他所需要的安全,是自己的铭感数据不被泄漏,不被第三方所知晓,所以,客户端数据的安全,一般会使用加密的方式保证安全。

本地加密

proguard混淆,最简单的加密,成本最低,只是加大了阅读难度。
通过Dexguard、各种第三方so加固服务、加壳服务等方式来进行保护,极大的增加破解这的破解成本。
密钥的加密也可以加强。

接口加密

接口上的安全,最基本的保证就是Https,同时对SSL协议的域名进行校验,在此之上,请求的接口上,一般会带上一个签名,或者叫token,这个加密的密钥串,就是身份的象征,一般来说,这个签名也就是通过本地密钥来进行生成的。

服务端要的安全

服务端需要的安全,主要是希望收到的请求,都真实的来自正常用户的正常触发。
但客户端在由不受信第三方(比如用户)控制的情况下,基本不存在能够验证请求是来自“自己的”客户端的方法,只能通过以下两种方式来增加破解者的破解成本。

  • 本地密钥+算法,用于生成接口签名,难点在于如何保证本地密钥和算法的安全性。
  • 动态密钥,将密钥的生成放在服务端,难点在于如何保证通信协议的安全性,同时也需要本地密钥来保证请求动态密钥的接口安全。

动态密钥方案,需要在保证通信协议安全的情况下,才有实现价值,设置网络请求框架的NO_PROXY模式,就是一个最简单的方案。

考虑到服务器设备的安全性,目前主流的防作弊检测都是在服务端进行,当然最主要的原因还是本地根本无法保证绝对的安全。

识别用户请求链路

根据必要的API调用流程和闭环,限制一组API调用中不同个体API的调用频率(相对次数)限制。设定几个硬币的参数关联逻辑,是跟业务逻辑环环相扣的,如果其他人想要自己拼装参数,往往会打破这个隐秘约束。
但这个检测通常需要耗费一定的系统资源,同时,当业务比较复杂时,如何保证请求检测的实时性和高效性,就成了一个很难平衡的问题。

网关层拦截、人机识别
  • 网关层拦截同IP的大量重复请求,设置同IP访问的阈值。
  • 大数据识别,对识别为恶意请求的进行封号处理。
TCP加密

目前大部分的App都是通过Http来进行数据交互,但基于TCP,可以实现自己的通信协议,另外,利用TCP包的无序性来增加破解的难度,这样,利用TCP心跳来维持一个安全的通信通道,也不错,但是操作难度比较大。

修改业务逻辑处理方式

在设计业务技术实现方案时,将业务判断逻辑放在后端,客户端只做指令算法,判断是否生效,在服务端进行判断。

后现代安全

量子加密、白盒加密、人工智能分析,这些基本都是下一代的安全策略。

Android开发技术周报182学习记录的更多相关文章

  1. Android开发技术周报176学习记录

    Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...

  2. Android开发技术周报183学习记录

    Android开发技术周报183学习记录 教程 Android性能优化来龙去脉总结 记录 一.性能问题常见 内存泄漏.频繁GC.耗电问题.OOM问题. 二.导致性能问题的原因 1.人为在ui线程中做了 ...

  3. Android开发技术周报

    Android开发技术周报 原文  http://androidweekly.cn/android-dev-weekly-issue48/ 教程 深入理解Android之Gradle Gradle是当 ...

  4. Android 开发技术周报 Issue#277

    新闻 Android 11界面再调整:加入快速截屏.多任务向国产ROM看齐 最新版Android 11推送 谷歌Pixel 5被曝光:支持反向充电 4月Android系统版本分布:8.0 Oreo最主

  5. Android 开发技术周报 Issue#278

    新闻 Pixel 4a渲染图曝光:或能成新款iPhone SE有力竞争者 Google Play商店为预注册的游戏和应用提供自动安装功能 Android最强单摄Pixel 4a样张曝光:1200万像素 ...

  6. Android 开发技术周报 Issue#280

    新闻 6分钟完整视频提前看光谷歌新机Pixel 4a 统一推送官方解读:消灭Android毒瘤.待机续航猛增43% Google Play细化搜索结果:可按评分.编辑推荐.最新上线过滤 教程 了解一下 ...

  7. Android 开发技术周报 Issue#270

    新闻 Play Store应用更新:换主题不需要再到系统设置了 新证据表明谷歌Fuchsia系统已进入"狗粮"阶段 即将邀请用户测试 谷歌I/O 2020 开发者大会如期举行 MW ...

  8. Android 开发技术周报 Issue#273

    新闻/News Android 11有新玩法:双击手机背部截屏/进入多任务界面 Android 11 DP2证实了类似AirDrop的附近文件分享功能 谷歌发布Camera Go:即使入门机也能有出色 ...

  9. Android 开发技术周报 Issue#279

    新闻 丧心病狂or形势所迫?谈谈Android奇葩的"链式启动" 传闻称Android TV将更名为Google TV 谷歌官宣Android 11 Beta发布会:6月3日见 教 ...

随机推荐

  1. vue如何使用rules对表单字段进行校验

    基于element-ui 1.在代码中,添加属性::rule <el-form :model="form" :rules="rules" ref=&quo ...

  2. Flask 单元测试 unittest

    import unittest 单元测试 app = Flask(__name__) -------------------------------------------- import unite ...

  3. linux ssh反向代理

    参考:https://segmentfault.com/a/1190000002718360 内外运行:sshpass -p 123456 ssh -fNR 5000:localhost:22 ser ...

  4. vue+elementUI表格列显示隐藏遇到bug

    在最近的项目中,有需求要做到根据字段显示列,原来以为简单的v-if可以解决. 在开发的过程中遇到问题, <el-table ref="multipleTable" :data ...

  5. PS教程:大神教你用PS制作《大鱼海棠》海报

        本来做的是一千左右像素的,但最后粗心让我存成500几px的了,可能会有点不清楚,唉,忙活这莫久竟然不敌最后一步的粗心呀     教程有千千万,但跟着作就好像是以前幼儿园老师拿着你的手写字,你可 ...

  6. Android.mk学习

    2019-03-31 学习变量 $(call my-dir) /usr/bin2/android-ndk-r16/build/core $(CLEAR_VARS) /usr/bin2/android- ...

  7. 2-1 如何抓不同的接口(手机抓包,web网页抓包)

    举个例子,一个测试和安卓的对话. 测试:Android你这里有个bug Android:这是服务端的bug 测试:是你这里显示的不对 Android:你去看服务端返回数据,他不对,你会不会测试. 从这 ...

  8. 【java】:多线程面试题

    经常面试的时候,让写各种乱七八糟的多线程面试题,收集了很多,有些还是挺好玩的. 1.编写程序实现,子线程循环10次,接着主线程循环20次,接着再子线程循环10次,主线程循环20次,如此反复,循环50次 ...

  9. 在JAVA中对于类,对象,继承,多态的看法

    这是我第一次学高级语言.很抱歉选择了JAVA,目标是开发一款可以上线的APP. 类:是建立对象的一个模板,就是系列产品中的基础款图纸.只是图纸而已.不是产品. 对象:是一个可以操作的对象.新建一个对象 ...

  10. java集成memcached、redis防止缓存穿透

    下载相关jar,安装Memcached,安装教程:http://www.runoob.com/memcached/memcached-install.html spring配置memcached &l ...