欢迎访问网易云社区,了解更多网易技术产品运营经验。

因为工信部对移动App应用安全过检要求日益增多,不加固大都达不到工信部的要求,同时开发者加固App大都是为了防止以下10个检测项出现问题,影响App上架。

1.程序代码安全

“很多人可能认为这一项技术含量并不大,其实这项在App上线时,检测方是有一些要求的”,网易资深安全开发工程师朱星星认为,在App上线时,开发者最好准备相关的《法律声明及隐私政策》、申请用户权限的调用系统说明,以及标注使用怎么样的SDK收集用户数据及收集用户数据的用途,这些都是硬性要求。

2.程序代码防护

程序代码防护是检测方判断代码保护基本强度的项目之一,这也是判断App开发者是否有安全开发意识的标准之一。业界最常见的程序代码防护有以下几种——客户端App采用代码混淆技术,增加能够防止第三方逆向工具进行逆向反编译,使用加固、防篡改机制、防二次打包等技术。

3.密码与安全策略

这一问题在金融类App非常常见,开发者往往需要考虑的是用户在输入账号密码时会不会被第三方记录截屏。“我们在帮助客户解决这一个问题时,建议客户一定要有一个防键盘记录SDK,这样用户每次打开键盘字幕排序是不一样的,App也能更安全更容易过检”,朱星星说。

4.权限与界面安全

在移动互联网时代,黑客的攻击方式越来越多样化,伪造用户登录页面窃取用户信息就是其中一种。在App过检测试时,检测方会有提供同样的虚假的登录页面来检测App是否有防范意识,这就需要开发者适当的在App中给用户一些警示信息,提示登录或关键界面已被覆盖的警示信息。

5.动态调试

动态调试技术在软件逆向工程领域也是一个很热门的概念,它是指破解者利用调试器跟踪软件的运行,寻求破解的途径。朱星星表示:“面对破解者的动态调试,我们可以采取对App进行加固的方案,防止App被动态调试”。

6.SO注入

SO注入也是比较常见的黑客入侵手段,在安卓App过检中是必测项。据朱星星介绍,一般来说有三个方案可以解决这一问题——修改linker中的dlopen函数,防止第三方SO加载;定时检测应用加载的第三方so库,如果发现是被注入的SO,则卸载加载的SO;对被测系统进行加固,防止被测系统被动态注入第三方SO。

7.内存数据保护

如何保护自己的程序不被其他程序读取或改写内存一直是技术开发者们需要解决的重要问题。在朱星星的分享中,他提到防内存被第三方程序读写。“我们监控/proc/pid/mem、/proc/tid/mem等文件的读写操作,当这些文件被第三方程序访问时,触发设置的回调函数,并配合防注入、防调试等方法,最终实现防内存修改。”

8.隐私与储存数据

技术开发者的代码文档如果使用明文存储,很容易出问题。“事实上,不管App有无其他问题,检测方如果检测到App里有明文存储,则一定会被打回来”,朱星星在解释该问题重要性时告诫开发者,在开发阶段一定要注意xml、db文件是否存在明文存储的问题。

9.日志信息泄露

在移动App的开发过程中,日志信息的安全是非常值得关注的问题。日志信息泄露,主要是防止打印的log容易被破解者作为分析的切入点,分析到App的执行逻辑等。除了静态代码不能出现log的调用之外,动态运行时也不能输出日志信息。

10.通信与数据安全

在全球新一轮新技术革命的冲击下,用户的生活方式越来越依赖于线上应用,以致于通信数据正呈爆发式的增长。但令人担忧的是,线上数据的大量聚集增加了数据泄密的可能,导致信息安全面临威胁。为解决这一威胁,朱星星建议的做法是对敏感数据进行加密传输,增加加密信道的安全性检测(包含中间人攻击检测等)HTTPS 通信协议等。

更多详情请见:《网易云易盾朱星星:最容易被驳回的10大APP过检项》

网易云易盾提供Android 应用加固解决方案,感兴趣的朋友可以点击这里免费试用

IOS应用加固免费试用可点击这里

相关文章:
【推荐】 阿里云PolarDB及其共享存储PolarFS技术实现分析(上)
【推荐】 MongoDB的正确使用姿势

加固apk的开发者最常面对的十种问题的更多相关文章

  1. 一文读懂加固apk的开发者是怎么想的

    有人说加固会明显拖慢启动速度,同时造成运行卡顿,严重降低用户体验,而且加固是完全可以脱壳的,只需要pc配合进行断点调试就能抓到解密后的dex文件,加固并没有所说的那么安全. 但是为什么还有一大批开发者 ...

  2. 360加固apk并自动签名

    我们知道Android加混淆之后,代码的安全性得到了提高,即使你hook,反编译得到的也是乱码的,对于阅读性造成了影响,为了增强代码的破解难度,我们通常退对apk进行加固,常见的有腾讯,360,爱加密 ...

  3. Android动态方式破解apk终极篇(加固apk破解方式)

    一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应 ...

  4. Python开发者最常犯的10个错误

    Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库.与其它大多数程序设计语言使用大括号不一样 ,它使用缩进来定义语句块. 在平时的工作中,Python开发者很容易犯一些小错 ...

  5. java开发者最常去的20个英文网站

    java开发者最常去的20个英文网站: 1.[http://www.javaalmanac.com] Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的 ...

  6. Node.js开发者最常范的10个错误

    目录 前言 1 不使用开发工具 1.1 自动重启工具 1.2 浏览器自动刷新工具 2 阻塞event loop 3 频繁调用回调函数 4 圣诞树结构的回调(回调的地狱) 5 创建一个大而完整的应用程序 ...

  7. [转载]AngularJS 开发者最常犯的 10 个错误

    http://www.oschina.net/translate/top-10-mistakes-angularjs-developers-make

  8. 国际化SEO优化的最佳实践

    作者:Kristopher Jones 翻译 :吴祺深 欢迎访问网易云社区,了解更多网易技术产品运营经验. 让我们来说一下hreflang属性.如果你还没有关掉这个页面,那么你已经完成了这个教程最重要 ...

  9. 当前安卓App加固到底该如何做到防篡改?

    安卓dalvik虚拟机要求dex文件在内存中以明文形式存在,那么任何加壳方法到头来到了内存还是明文存在,各种dump方法终究是可以获得它的.App究竟应该如何加固才能防止被篡改?   加固和 dump ...

随机推荐

  1. mysql数据导入的时候提示Got a packet bigger than 'max_allowed_packet' bytes

    Got a packet bigger than 'max_allowed_packet' bytes错误 默认可能是2M 把max_allowed_packet设置大于5M试试,我设置为160M,输 ...

  2. java.util.ConcurrentModificationException异常分析

    Java在操作ArrayList.HashMap.TreeMap等容器类时,遇到了java.util.ConcurrentModificationException异常.以ArrayList为例,如下 ...

  3. Node.js中的express框架获取http参数

    最近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结. express获取参数有三种方法:官网介绍如下 Checks route para ...

  4. win7局域网内共享文件夹及安全设置

    右键想要共享的文件夹,选择属性. 在文件夹属性对话框中选择共享标签,如图: 点击共享按钮,弹出文件共享对话框. 添加 Everyone ,并根据实际需要修改权限.权限可以是读取 或 读取/写入. 到此 ...

  5. Python运维开发基础03-语法基础

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现" ...

  6. shared_ptr&scoped_ptr&weak_ptr

    [RAII - Resource Acquisition Is Initialization] 获得一个资源的时候,不管这个资源是对象.内存.文件句柄或者其它什么,你都要在一个对象的构造函数中获得它, ...

  7. java内存模型—先行发生原则

    Java语言中有一个“先行发生”(happens-before)的原则.这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据,依赖这个原则,我们可以通过几条规则一揽子解决并发环境下两个操 ...

  8. JavaScript RegExp.test() 方法

    定义和用法: test() 方法用于检测一个字符串是否匹配某个模式. 语法: RegExpObject.test(string); RegExpObject:正则表达式; string:必须参数,要检 ...

  9. Python爬虫进阶五之多线程的用法

    前言 我们之前写的爬虫都是单个线程的?这怎么够?一旦一个地方卡到不动了,那不就永远等待下去了?为此我们可以使用多线程或者多进程来处理. 首先声明一点! 多线程和多进程是不一样的!一个是 thread ...

  10. change qt version

    https://blog.csdn.net/xiaoheibaqi/article/details/50777203 右键工程->设置qt project setting -->修改ver ...