android - 保护 Android Intent 中的额外数据

标签 android android-intent android-4.2-jelly-bean

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

最佳答案

从 Android 4.1.1 开始,添加了一个额外的权限来保护第三方应用程序使用 RecentTaskInfo 读取 extra。此权限(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的评论:

Add new signature-level permission to get details of tasks.

Third party apps now can't get access to the extras of the intents associated with tasks, to keep private data in them from leaking out.

Change-Id: I95af9e181ac42557bc8b981807e7ddd266a88d0e

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

关于android - 保护 Android Intent 中的额外数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501260/

相关文章:

java - 如何将 mp3 文件发送到 firebase

java - 在 Android 中缩放 SVG?

android - startActivity 上的 java.lang.IllegalArgumentException( Intent 、 bundle 动画)

android - 停止识别 Google Now 滑动手势

java - 如何在 WebView 中自动填充表单字段?

android - 获取recyclerview位置并在点击时传递对象

java - 如何修复 Android-Studio 中 Uri-Path 的 "FileNotFoundException"(没有此类文件或目录)错误?

android - 有官方的Android section View吗?

android - 谷歌地图应用程序的新更新不显示我在 Android 中创建的标记

android - 奇怪的重绘?在 android 上的 webview 中发布 html 应用程序