【Android学习记录】Activity到底在什么情况下才会造成信息泄露?

本文探讨了Android Activity在何种情况下可能导致信息泄露,重点分析了standard和singleTask模式下onNewIntent的使用,揭示了通过onActivityResult接收敏感数据的安全隐患,并提醒开发者避免使用setResult传递敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 概述

在Android的安全里面,有很大一部分的是组件的安全,有时候自认为对组件安全已经有比较深的理解,但是回过头去看了一下,还是有点疑问,问了几个人,没有得到答案,周末就自己研究一下
当年乌云很火的帖子–Activity安全里面有一句话,是这么写的:在这里插入图片描述
这里当时看的时候也没太注意,直到最近又回顾的时候,才发现:Activity到底在什么时间才会造成信息泄露,又是如何进行攻击才能获得敏感信息?
还有个英文的版本,文章讲的很不错,也有不少案例:
Using Technology in a Safe Way

2 基础知识

2.1 Android Activity的四种Task方式

模式 描述 首次启动入口函数 二次启动
standard 默认行为。每次启动一个activity,系统都会在目标task新建一个实例。 onCreate onCreate
singleTop 如果目标activity的实例已经存在于目标task的栈顶,系统会直接使用该实例,并调用该activity的onNewIntent()(不会重新create) onCreate 栈顶时onNewIntent
singleTask 在一个新任务的栈顶创建activity的实例。如果实例已经存在,系统会直接使用该实例,并调用该activity的onNewIntent()(不会重新create) onCreate onNewIntent
singleInstance 和"singleTask"类似,但在目标activity的task中不会再运行其他的activity,在那个task中永远只有一个activity。 onCreate onNewIntent

2.2 使用standard和singleTask验证一下入口函数

验证方法:
在这里插入图片描述
同时根据Activity生命周期看一下Log情况
在这里插入图片描述
APP1的Source:

    public void SendIntentToActivity(View view) {
   
        Log.d(TAG,"SendIntentToActivity");
        Intent mIntent = new Intent();
        mIntent.setAction("com.test.activitytest2_test");
        startActivity(mIntent);
    }

APP2的Source仅标注几个重要的函数:

public class SecondActivity extends AppCompatActivity {
   

    private static final String LOGTAG = "Activitytest2TestSecondActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        Log.d(LOGTAG,new Throwable().getStackTrace()[0].getMethodName());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }
    @Override
    protected void onNewIntent(Intent intent) {
   
        Log.d(LOGTAG,new Throwable().getStackTrace()[0].getMethodName());
        super.onNewIntent(intent);
    }

    @Override
    protected void <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值