【原创】总结Android应用安全
Android应用安全总结
额, 自己平时很少写文章,所以感觉自己平时学习到很多,但是都无法表达出来,也没办法讲给别人,所以还是多写写文章来总结下自己学习的东西。
对于Android安全个人感觉一般都是相对的,不同安全级别防不同级别的人。真正完全安全还是很难的,所谓道高一尺魔高一丈。
我这里整理了几点平时常用的安全操作,分享给大家。
本地数据安全
这个大家应该都有这个安全意识,对于干Android新手来说还是需要提一提的,新人往往没有这个安全意识,所以在保存在SP
或者数据库里面的数据都是不经过加密,这样如果是一些密钥数据肯定是不安全的,而且很容易被别人拿到。
键值对存储安全
例如我们存储在SP
里面手机号 , Token , 用户ID以及签名所需要的密钥,这些都是尽量通过加密以后存储密文。这里推荐对于Key-Value
的存储可以使用腾讯开源库MMKV。我们可以通过如下调用加密保存数据以达到数据安全,该库还有很多其他方法有兴趣可以深入研究下。
数据库存储安全
我们肯定是使用加密的数据库来保证数据安全了,这里以Room框架
来说明,我们需要添加sqlcilpher来实现数据库加密
然后在初始化数据库时候,添加这个加密库的Factory即可
清单文件配置
清单文件里的有个属性需要配置,不然一些安全软件扫描都会提示你错误
android:allowBackup
这个属性就是防止被备份数据,属性具体说明可以读读Android之allowBackup属性讲的很详细了
网络报文安全
网络安全最基本的就是使用https
协议来保证数据安全,https
协议对网络报文进行加密传输,相对http
安全很多。
报文加密
那使用Https
是不是就安全了,当然不是!还有个工具叫抓包工具,常用的有Fiddler、Charles,高级点的用Wireshark。我们的报文其实还是明文裸奔。所以还需要对报文进行加密和签名。通常我们加密报文后传出的参数就两个一个data
加密的报文还有一个sign
报文签名。下面是简单实现
无代理配置
相信目前80%~90%的应用都是基于或者所使用的库基于OkHttp
进行网络请求。不像早些年,还是自己去封装HttpURLConnect
去收发报文。为了防止抓包我们还可以通过OkHttp
来配置Proxy.NO_PROXY
,代码如下:
我们可以看下效果,配置前后对于一般的抓包还是很有效果的(右侧配置Proxy.NO_PROXY)。


密钥信息安全
加解密使用的密钥应该是安全中的安全,如果这个被别人知道了,那你数据的安全等于是白做了,所以如何保持密钥信息也是很重要的。
1. 底层存储
这是一种常见的存储方式,相对安全。主要就是通过JNI实现,将密钥通过底层C保存同时校验应用的签名
2. 网络存储
对于通用的接口,我们可以把密钥信息保存在程序中即可。涉及到用户信息以及交易信息的接口我们可以将密钥信息保存在后台服务器上,在用户登录后下发到客户端。如下:

二次打包
有反编译经验的同学应该都了解,没有经过加固的应用很容易被别人反编译以后二次打包。那这种我们常用的方式就是将一些核心功能的调用前校验应用的签名(JNI底层校验),特别是应用启动时候来校验应用签名是否正确,可以参考这篇文章实现android jni签名验证
代码混淆
代码的混淆还是很有必要的,虽然配置起来很麻烦,偶尔还会因为混淆的问题出现问题(特别是新增加功能后忘记配置混淆)。代码混淆以后加大了他人反编译以后阅读业务逻辑的难度,从而让你的应用更安全。
应用加固
应用的加固在你上传应用宝或者其他商店基本都是必须做的事情,常用的就360加固
,网易易盾
,百度加固
,爱加密
等,当然你是付钱越多加密的越安全了。
以上就是自己根据平时经验总结的一些安全知识,希望对大家有帮助。
__EOF__

本文链接:https://www.cnblogs.com/baiyuas/p/14988882.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!