热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android开发安全手册

常规安全防御手段混淆混淆是Android基本安全手段,虽然目前有很多工具能够反混淆,但是对于反编译调试代码还是有较大作用的。加固目前有很多第三方加固服务可以使用。如爱加密、360加

常规安全防御手段

混淆

混淆是Android基本安全手段,虽然目前有很多工具能够反混淆,但是对于反编译调试代码还是有较大作用的。

加固

目前有很多第三方加固服务可以使用。如爱加密、360加密、阿里聚安全等。可以选择一个使用。但是也不能认为使用了加固就万事大吉了,因为还是有被脱壳的风险的。

安全风险规避

数据接口泄露风险

风险说明

数据接口被劫持,中间人攻击等。

风险规避

  1. 使用HTTPS协议。
  2. HTTPS证书双向校验,客户端校验服务端证书、域名等是否一致,服务端校验客户端证书是否正确(签名CA是否合法、证书是否是自签名、主机域名是否匹配、证书是否过期等)。

本地存储数据泄露风险

风险说明

Android提供四种Android本地存储方式,分别为Shared Preferences、SQLite Databases、Internal Storage、External Storage。对于一些不当的存储方式,可能会造成数据泄露。

风险规避

  1. 对于SP、Database和Internal Storage可以设置打开方式,原则上都使用MODE_PRIVATE。
  2. 谨慎使用sharedUserId属性。拥有相同sharedUserId 和签名的应用可以共享本地数据。所以拥有sharedUserId属性的应用一定要使用安全的证书签名。
  3. 谨慎使用External Storage,因为它能够被所有应用读取。
  4. 对于敏感信息,需要加密之后进行存储,如密码等。

硬编码密钥泄露风险

风险说明

将AES加密密钥、支付宝SDK密钥等硬编码在代码中容易被反编译获得。

风险规避

对密钥进行加密,在使用的时候解密获得。推荐使用阿里聚安全的sdk加密。

日志泄露风险

风险说明

打印在Log中的日志容易被调试获取一些信息,所以应该避免在Release版本中输出敏感日志。

风险规避

推荐使用Timber等日志框架。设置在Release版本中不输出日志。

WebView远程代码执行漏洞

风险说明

api16之前,可以通过js反射获取Java代码运行环境,然后进行远程代码执行。

风险防范

  1. 如果没有必要,设置WebView不支持Js接口调用。

    webView.getSettings().setJavascriptEnabled(false);

  2. 移除系统隐藏JS调用接口

    webView.removeJavascriptInterface("searchBoxJavaBridge_");
    webView.removeJavascriptInterface("accessibilityTraversal");
    webView.removeJavascriptInterface("accessibility");

  3. 如果WebView不需要支持打开第三方网页,则可以过滤第三方网页,只允许打开自己的网页。可以使用HTTPS证书校验、白名单等方式进行过滤。

  4. 使用不支持Js接口调用的WebView打开第三方网页。

WebView 明文存储密码漏洞

风险说明

在api17之前,WebView会把用户统一保存的密码明文存储在手机上。因此可能会泄露用户密码。

风险规避

WebView.setSavaPassword(false);

本地拒绝服务风险

如果Activity的exported属性为true,则它能够被外部打开。这时候如果外部传给该Activity的数据异常,则可能会使应用闪退。

如某个被攻击的Activity代码

MyClass object = (MyClass)getIntent().getSerializableExtra("my_class");

则如果攻击者代码为,会造成被攻击者的闪退。

Intent localIntent = new Intent();
localIntent.setComponent(new ComponentName(packageName, className));
localIntent.putExtra("my_class", new MalformedObject());
startActivity(localIntent);

风险规避

  1. 如非必要,不要设置Activity的exported属性为true。
  2. 在获取Intent数据时检测过滤并catch异常。

弱加密风险

风险说明

使用一些较容易破解的加密算法。

风险规避

  1. 使用对称加密算法时避免使用DES算法
  2. 使用RSA算法加密时不使用NoPadding
  3. IvParameterSpec初始化时,不使用常量vector
  4. 在选择加密模式时避免使用ECB模式
  5. 使用RSA加密时,建议密钥长度大于1024bit

推荐阅读
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
幸运的anan本人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有