android:验证意图发送者的身份

2024-02-11

我在一家生产多个应用程序的公司工作,并非所有这些应用程序都具有相同的签名或更像我们暂时至少有 5-6 个应用程序证书。

我们试图创建一种机制,使同一设备上的所有公司应用程序共享相同的内容, 例如,如果用户从市场安装应用程序A并且没有安装应用程序,则会生成一个新的ID,如果现在他安装应用程序A,应用程序B应该具有与应用程序A相同的id(id只是生成的UUID类型#4) ETC...

目前我们正在使用广播,只有获得我们许可的应用程序才能接收该广播并通过另一个广播发回 id(这次是显式的)。 广播和响应受到我们的签名级别许可的保护,这当然没有帮助,因为我们有多个签名。

我尝试编写一个意图广播和恢复,它可以拥有自己的保护机制,该机制不仅限于一个签名,而是多个签名,问题是像 Binder.getSenderUID() 这样的东西不适用于广播,我得到了我的自己的uid。 看来我无法获得我的发件人的身份,除非他自己在意图中写下他的 id,这不是我可以信任的东西,因为它很容易被伪造。 使用加密要求应用程序带有密钥,这再次不安全,转向服务器进行验证需要太多时间,并且在移动设备上不能保证成功,因为不能 100% 确定周围有网络。

任何人都知道如何从一个应用程序到另一个应用程序获取验证\安全消息?(我所有的应用程序,但可能有不同的签名)。


与往常一样,这里有一个具有挑战性的问题,如果有的话,我永远不会得到正确的答案!答案,所以我被迫自己找到它。

意图的问题在于不可能获取发送者,因为它们与网络中的多播并行,其中发送者的地址并不重要。

如果我希望获得 sender 的 UID,即使他是本地的,我也需要创建一个“远程”进程,而不是使用广播 IPC,我需要使用带有 IBInder 实现的 AIDL。 一旦我有了一个 Binder 对象,我就可以在我的服务中调用 getCallingUid() 并获取调用者的 uid,这将允许我要求 PackageManager 给我它的公共证书(不询问进程本身,我询问操作系统)并进行比较它是我在apk中提前准备的一组证书。

另一端的调用应用程序(向我发送其 ID 的另一个进程)只需使用 bindService(service, conn, flags) 方法来绑定到我。 这种方法的缺点当然是耗时的过程,绑定需要时间,它是通过内核的异步调用,并且不如绑定到本地服务那么快。此外,由于我可能有多个应用程序,我需要同步访问我的内部 ID,因此只有第一个未失败的绑定调用才会为我设置 ID。 我仍然需要检查是否可以使用 Messenger 方法来防止多线程问题。

希望这对其他人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android:验证意图发送者的身份 的相关文章

  • 无法在 OSX 上使用 eclipse for android 链接到 cocos2dx

    我以前从来没有花这么多时间来初始设置开发环境 这有点荒谬 我正在尝试运行cocos2dx附带的演示代码 我在用着 ADK 附带的 eclipse 风格 cocos2d 2 1beta3 x 2 1 0 ndk r8c 我尝试使用 creat
  • GLSurfaceView onDrawFrame 清除行为

    我在使用 GLSurfaceView 时遇到了不同的行为 据我所知 程序有责任清除每帧的缓冲区 颜色和深度 这意味着 如果我不清除缓冲区 我将获得最后一帧的内容 或双缓冲的前一帧 似乎无论在某些设备上如何 缓冲区都会被清除 我在一些测试设备
  • 如何使用 Gson 跳过空条目

    使用 Gson 反序列化 JSON 时 有没有办法跳过 JSON 数组中的空条目 text adsfsd title asdfsd null text adsfsd title asdfsd 生成的 List 有 3 个条目 第二个条目为空
  • Kotlin 中使用 Retrofit @PartMap 的多部分请求错误 (Android)

    如果我在 Java 中使用这段代码 那么它工作得很好 当我在 kotlin 中转换该代码时 出现错误 Logcat 08 20 23 46 51 003 3782 3782 com qkangaroo app W System err ja
  • 如何在Android中设置对话框的图标

    我想在Android中自定义一个对话框 我知道如何设置对话框的标题 dialog setTitle O message 现在我想在标题前面设置图标 我怎样才能实现这个目标 Dialog dialog dialog new Dialog th
  • 创建全球唯一的 Android 标识符

    说到Android唯一ID 相信大家都见过this https stackoverflow com questions 2785485 is there a unique android device id 但是我也试图提出一个解决方案来唯
  • 尝试查找 BLE 设备时如何使用 LeDeviceListAdapter?

    我正在 Android 中开发一个应用程序 并且我遵循 Android 中的代码建议开发者页面 http developer android com guide topics connectivity bluetooth le html f
  • 自定义溢出图标太大(使用 android.support.v7 和 AppCompat)

    我的目标是让操作栏为红色 但由于默认 Android 库中我的唯一选项是白色和黑色 因此我尝试对其进行自定义 我通过在 gimp 上使用油漆桶来填充白色图标并以不同的名称重新保存它 从而制作了一些自定义红色图标 我对溢出图标做了同样的事情
  • 如何禁用列表视图中的项目?

    我有一个列表视图 它是通过数据库中的记录填充的 现在我必须使一些记录可见但不可选择 我怎样才能做到这一点 这是我的代码 public class SomeClass extends ListActivity private static L
  • 从通用对象访问字段变量

    我有两节课ClassOne and ClassTwo 更新公共字段data i e public class ClassOne public byte data new byte 10 Thread that updates data an
  • 如何将点击事件从片段传递到容器活动?

    我正在实现一个导航抽屉活动 其中导航抽屉中有一个片段 由回收器视图组成 可以动态地将项目添加到导航抽屉 我已经成功实现了这个概念 但面临一个小问题 即当我单击片段中的任何项目时 导航抽屉不会关闭 这是因为我无法从片段访问 DrawerLay
  • 如何过滤EditText的输入?

    我想过滤一个的输入EditText 只允许使用数字和字母 首先我使用TextWatcher处理最后一个输入字符 但是当您移动光标或将某些内容粘贴到EditText 这个方法失败了 现在我想知道有没有办法过滤非法输入并反馈给用户 Add In
  • 取消正在执行的 AsyncTask 的理想方法

    我正在后台线程中运行远程音频文件获取和音频文件播放操作AsyncTask A Cancellable显示获取操作运行时间的进度条 我想取消 中止AsyncTask当用户取消 决定反对 操作时运行 处理这种情况的理想方法是什么 刚刚发现Ale
  • Android:iOS UIActionSheet 等效项

    我正在转换一个 iOS 应用程序 并且需要实现从 iOS 到 Android 的 UIActionSheet 的等效项 什么 UI 元素最能模仿这一点 我的目标是 Android 2 2 及更高版本 您将使用 AlertDialog 或 D
  • 为并行的小型已知冻结进程创建匿名 AsyncTask 是一个好习惯吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 例如 您要做一些需要几秒钟的事情 并且不想冻结您的 UI 线程 对吗 您可以使用 AsyncTask 但您不想创建外部 或内部 类来解决小冻结问
  • Android Studio 上的 Twitter Kit Fabric Android 模块库

    我在使用适用于 Android 的 Twitter Kit SDK 时遇到问题 我需要将 Twitter Kit SDK 导入到我的项目中的库 模块 我正在使用 Android Studio 我正在使用适用于 Android 的 Fabri
  • 如何执行graph-api Facebook Android SDK来上传照片并标记人物?

    如何执行graph api Facebook Android SDK来上传照片并标记人物 在网络上 对于 Android 版 facebook sdk 有很多混淆 我的第一个方法 Bitmap img bitmap if img null
  • Android Wear Preview 未连接到 Wear Emulator

    我正在尝试为 Google Wear 设置开发环境并遵循 Google 的指示 http developer android com training wearables apps creating html但一旦我设置了端口转发 adb
  • Android:使用 ObjectAnimator 平移具有视图尺寸小数值的视图

    看来旧的视图动画 translate scale等 不再被接受AnimationInflater 至少截至 ICS 而言 我在 4 0 4 中阅读了它的代码 它明确只需要 XML 元素set objectAnimator animator
  • Android - 下载 JSON 数据并保存到共享首选项

    我正在从 PHP 服务读取 JSON 数据 每当该 JSON 的版本发生变化时 我想将其存储在 Android 上 用新数据替换旧数据 JSON 仅用于填充 Spinner 我的问题是 JSON 有 36KB 可以将其存储在共享首选项中有一

随机推荐

  • Gwt 列表框项目对对象的引用

    我有一个列表框 我想添加一些项目 只有将项目添加为字符串的方法 但是 我想使用字符串和对对象的引用向列表框添加一个项目 这样 如果在列表框中选择了某个项目 我也会获得对象引用 否则我必须始终以 equal 方式搜索正确的对象 因此还有什么选
  • 从地图创建字符串

    我目前正在开发一个项目 通过使用上下文无关语法规则 我将生成随机句子 现在 我正在创建一个函数 该函数将接受哈希值 并遍历它 选择正确的产生式来创建句子并将其作为字符串返回 例如 给定以下格式的哈希
  • 随着记录的增长,mongoldb 文档更新的性能下降

    我有一个 iOS 应用程序 它将批量数据发送到 API 端点 该端点将数据存储到 mongodb 数据库中 我的数据建模如下 id ObjectId device id Uuid rtfb status bool repetitions s
  • 如何从数据库插入图像?

    我想在我的报告的详细信息区域中插入数据库中的图像贾斯帕软件工作室 JPG 图像保存在 MySQL 中imgdata类型的longblob 我尝试将此表达式放入 Image 元素中 F imgdata MyUtil getInputStrea
  • 需要 Gradle 版本 1.10。当前版本是2.2.1。在安卓中

    我有一个使用 Android Studio 构建的 Android 项目 并尝试在我的 Android Studio 上导入并运行它 但在尝试同步项目时遇到以下错误 Failed to sync Gradle project project
  • 使用 java api 在 Elasticsearch 中创建索引并添加映射会导致缺少分析器错误

    代码是Scala 语言 它与Java 代码极其相似 我们的地图索引器用于创建索引的代码 https gist github com a16e5946b67c 6d12b2b8 https gist github com a16e5946b6
  • 包含子字符串列表中精确子字符串的字符串

    Scala 初学者在这里 我试图找到所有推文文本中至少包含关键字列表中的一个关键字 given 其中一条推文 case class Tweet user String text String retweets Int 举个例子Tweet u
  • 我如何在我的 Angular 2 项目中使用 daterangepicker js?

    我正在 Angular 2 项目中工作 想要集成 daterangepicker js 库来弹出日期范围选择器 如果您之前没有听说过 这里链接到图书馆http www daterangepicker com http www dateran
  • Redux Toolkit - 我无法更新 Slice 状态?

    我想更新状态并尝试了几种方法来做到这一点 但我不能 首先 我得到了一个problem https stackoverflow com questions 65764486 why reducer function return only p
  • SQL使用触发器进行约束

    我正在研究触发因素和约束因素 我有一个使用触发器的问题 说实话 我不太确定如何使用触发器 假设我们有一个教师表 这个教师表包含teacher id ssn first name last name class time 例如 teacher
  • R 使用 diff:二元运算符错误的非数字参数

    我们使用以下命令解析包含一些数字的 CSV 文件 tt lt read table test2 csv sep stringsAsFactors FALSE 它有效 印刷tt 1 产生一个很好的向量并且sd tt 1 是明智的 然而 当我们
  • 如何在 OpenCL 中验证波前/扭曲大小?

    我使用的是 AMD Radeon HD 7700 GPU 我想使用以下内核来验证波前尺寸是否为 64 kernel void kernel test warpsize global T dataSet uint size size t id
  • Twitter Bootstrap 中的数据切换属性

    什么是data toggleTwitter Bootstrap 中的属性有什么作用 我在 Bootstrap API 中找不到答案 我之前也看到过类似的问题 link https stackoverflow com questions 10
  • BigQuery:联合两个基于联合 Google 电子表格的不同表

    我有两个不同的 Google 电子表格 1 个有 4 列 Col1 Col2 Col5 Col6 ID1 A B C ID2 D E F 其中包含前一个文件的 4 列 以及另外 2 列 Col1 Col2 Col3 Col4 Col5 Co
  • 方案相当于元组拆包是什么?

    在Python中 我可以做这样的事情 t 1 2 a b t a 将是 1 b 将是 2 假设我有一个列表 1 2 在方案中 有什么办法可以做类似的事情let 如果有什么区别的话 我会使用 Racket 在球拍中你可以使用match htt
  • 我必须以哪种格式将参数传递给 Project.ImportDirectory(...)?

    我已设法通过自动化 API 打开我的 EA 项目 但不知道将参数传递给的正确格式ImportDirectory method var repo new EA RepositoryClass repo OpenFile some eap va
  • 是否应该在每个事务上创建 EF dbContext

    我正在尝试找出管理 DbContext 的最佳方法 我见过不进行处置的代码示例 并且我见过人们说这是一个坏主意 我做下面这样的事情合适吗 另外 我应该将每个事务 包括读取 放在新的 DbContext 中吗 这可能是另一个问题 但是关于 E
  • 一次更改工作表中的多个命名单元格和范围

    我想在工作表中更改很多 Excel 名称 200 名称就像 comp 我想在 cons 中更改它 所以每次的变化都是一样的 有没有办法一次性完成这一切 我知道对于函数来说 使用 control h 很简单 然后用 cons 替换 comp
  • C#/CLI 标识符的最大长度是多少?

    名称还有哪些其他限制 除了范围内明显的唯一性之外 这些是在哪里定义的 除了其他答案之外 Microsoft Visual C 编译器接受的最大标识符长度是511 个字符 可以使用以下代码进行测试 class Program private
  • android:验证意图发送者的身份

    我在一家生产多个应用程序的公司工作 并非所有这些应用程序都具有相同的签名或更像我们暂时至少有 5 6 个应用程序证书 我们试图创建一种机制 使同一设备上的所有公司应用程序共享相同的内容 例如 如果用户从市场安装应用程序A并且没有安装应用程序