首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护Android Intent中的额外数据

保护Android Intent中的额外数据
EN

Stack Overflow用户
提问于 2013-03-19 21:46:31
回答 3查看 1.1K关注 0票数 7

我正在使用意图在新任务中启动新活动。此意图在其额外内容中包含该活动所需的一些私有数据。此数据不应被其他应用程序读取。我们已经调查了这些数据是否真的没有泄露。我们发现,通过从getRecentTasks()使用RecentTaskInfo,任何具有GET_TASK权限的应用程序都可以读取这些额外的数据。这不是很安全。一旦我们发现这个漏洞我们就停止搜索了。有没有更多的方式来泄露这些数据?而且,我如何确保额外的数据不被其他应用程序读取?

EN

回答 3

Stack Overflow用户

发布于 2013-03-19 22:14:35

从安卓4.1.1开始,添加了一个额外的权限,以保护使用RecentTaskInfo的第三方应用程序读取额外的内容。该权限(android.Manifest.permission.GET_DETAILED_TASKS)只能由系统获取。如果没有此权限,额外的将在通过RecentTaskInfo返回baseIntent之前被换出。

来自commit http://androidxref.com/4.2.2_r1/history/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java#8238e717df4bc5eebf15f97172d68af3599a95bb的注释

添加新的签名级权限,获取任务详情。

第三方应用程序现在无法访问与任务相关的意图的额外内容,以防止其中的私人数据泄露。

更改Id: I95af9e181ac42557bc8b981807e7ddd266a88d0e

因此,似乎正在努力使intent extra更安全地传输敏感信息。我不知道是否有其他方式,这些额外的可以泄漏,但至少额外的似乎可以从JB向上。

票数 8
EN

Stack Overflow用户

发布于 2013-03-19 21:55:18

此意图在其额外内容中携带该活动所需的一些私有数据

为什么?将标识符传递给额外的私有数据,其中将这些标识符解析为私有数据(例如,数据库查询)只能由活动完成。

我们发现,通过从getRecentTasks()中使用RecentTaskInfo,任何具有GET_TASK权限的应用程序都可以读取这些额外的数据

是的,我在大约两年前就blogged about this了,其他人可能在那之前就做了。

有没有更多的方式来泄露这些数据?

启动其他组件的所有请求都是通过操作系统进程进行的,因此数据总是“泄露”给操作系统。

而且,根据你对Intent做了什么,你可能会以其他方式泄露它(例如,将Intent本身作为Parcelable传递给其他应用程序)。

,我如何确保extra中的数据不会被其他应用程序读取?

你不能。同样,不要把私有数据放在额外的活动中,而是使用可以用来获取私有数据的标识符。

票数 6
EN

Stack Overflow用户

发布于 2013-03-19 21:57:54

您有私有的存储空间,只有您的应用程序才能读取。在非根设备上,您在那里存储的信息将只能由您的应用程序访问。

你可以使用SharedPreference来存储你的数据--数据存储在你的应用程序指定的私有存储中。

或者,您可以直接使用私有存储,并将任意文件连接到那里,如下所示:

代码语言:javascript
复制
FileOutputStream fos;
try {
    fos = openFileOutput (FILENAME, Context.MODE_PRIVATE);
    fos.write (string.getBytes ());
    fos.close ();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15501260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档