Android 应用安全 - 案例

版权归作者所有,转发请注明出处://www.greatytc.com/p/d6858420e002

Android 应用安全 - 应用安全概览
Android 应用安全 - 移动应用安全
Android 应用安全 - Mobile安全漏洞Top10(OWASP)
Android 应用安全 - 案例
Android 应用安全 - 检测设备是否Root
Android 应用安全 - 加密算法

前言

提高应用的安全性有助于维护用户信任和设备完整性

1.SharedPrefrence配置

非特殊情况下使用MODE_PRIVATE

getSharedPreferences("mike_preference", Context.MODE_WORLD_READABLE) //风险
getSharedPreferences("mike_preference", Context.MODE_PRIVATE) //低风险

2.Sqlite SQL注入

一般发生在数据查询的时候,可能会导致数据泄露
案例:

val sql = """
            SELECT * FROM tableName where name = ${edit.text}
        """.trimIndent()
SELECT * FROM tableName where name = 张三 //正常
SELECT * FROM tableName where name = 张三 or 0=0 //数据泄露

解决方式:使用 SimpleSqliteQueue 等或 google.zoom @Query @RawQuery 方式去查询数据

3.Export 组件需要判断来源

尽量避免设置:

android:exported="true"

如果需要将Activity进行Export,则需要创建新的权限,以允许限制的应用可以访问,此权限的保护级别应该是基于签名的,以允许使用相同证书签名的应用相互通信,并且需要在public的Activity判断来源,并不是接收所有来源

<permission android:name="mike.security.ShowActivityPermisson"
        android:label="show_permission"
        android:protectionLevel="signature">
<activity android:name=".ShowActiivty" android:exported="true" android:permission="mike.security.ShowActivityPermisson"/>

4.Activity在接收其他Activity传参时要判断来源

同上

5.屏幕挟持

android:filterTouchesWhenObscured="false" //风险
 <!-- Specifies whether to filter touches when the view's window is obscured by
       another visible window.  When set to true, the view will not receive touches
       whenever a toast, dialog or other window appears above the view's window.
      Refer to the {@link android.view.View} security documentation for more details. -->

打开此设置并设置为true,防止屏幕点击事件挟持,可能会诱导用户点击进入恶意页面或者下载恶意文件

6.使用安全的网络传输协议

推荐使用安全的https文传协议,并且使用正确的证书固定检查,稍后的文章中会详细记录

7.记住密码

记住账户密码的加密方式最好通过公私钥加密最为安全,由Server端去解密

8.会话超时处理

大部分业务都会处理会话超时的逻辑处理,就是超过会话时间之后自动登出,这个时间限制根据APP功能而异,金融银行类App一般建议小于或等于5分钟

9.硬编码的Key

不要在代码中定义硬编码的密钥,硬编码的密钥很容易暴露给外部导致数据泄露

10.密码/账户枚举

当用户输入错误的密码或者账户时,不要提示具体详细的错误信息以及原因,防止密码枚举破解

11.不安全的密码算法

不安全或不建议使用的算法:RC2 MD4 MD5 SHA1

推荐使用的算法:
哈希算法:SHA256
对称加密算法:AES
非对称加密:RSA

12.XML校验

在解析XML文件之前,防止XML文件与预期的结构不同以及对象注入 可以使用XSD模板对XML文件进行校验

13.数据恢复开关

安全要求高的App推荐关闭allowBackup开关,如果打开此开关则此应用的数据可以恢复到其他设备上,支付,金融,聊天类应用可能导致用户数据泄露

14.日志信息泄露

日志信息泄露是非常普遍的问题

不要在日志中包含敏感数据以及用户信息
在生产模式关闭日志信息输出

15.复制粘贴以及剪切板功能

复制,粘贴,剪切板是系统共用的功能,在敏感信息页面尽量避免此功能的使用

16.屏幕录像

通过设置此标签从而限制屏幕录制

window.setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE)

17.源代码混淆

代码混淆可以有效避免逆向工程,代码混淆时需要注意将需要混淆和不需要混淆的文件分好包,防止核心功能泄露

19.默认的返回值

在某些安全相关的条件判断中,默认的返回值应该是不安全的不让用户通过的结果

20.提供恰当的权限

应用应该申请最小以及最少的权限,应该审核应用所定义的所有权限是否是充分必要的

21.随机数的生成

使用SecureRandom来获取安全的随机数,注意不要设置seed

22.外部文件存储

除非必要不要将敏感数据存储到在外部存储器,因为外部存储是共享区域不受应用沙盒保护,考虑使用内部存储的方式,并且控制好存储数据的生命周期,如果需要使用外部存储,考虑使用合适的加密方式保护数据

23.单例以及公共变量的使用

在使用单例类中,如果单例对象中有存储用户数据的变量,在多个地方使用的时候注意清理,防止上一次数据缓存造成泄露,在有多个子线程处理公共变量的场景中,需要注意可能会出现调用的同时其他线程也在更改此变量造成数据
问题

24.敏感数据保护

敏感数据需要在数据处理的每个环节考虑其安全性


数据周期.PNG

25.广播接收器使用不当修改用户资料

    override fun onReceive(context: Context?, intent: Intent?) {
        UserInfo.instance.saveImg(intent.getStringExtra(Constants.PHOTO))
    }

在修改用户信息之前需要判断用户登录状态

    override fun onReceive(context: Context?, intent: Intent?) {
        if(UserInfo.instance.isLogin){
            UserInfo.instance.saveImg(intent.getStringExtra(Constants.PHOTO))
        }
    }

持续更新中...

欢迎关注Mike的简书

Android 知识整理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容