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:验证意图发送者的身份 的相关文章

  • 应用程序在加载 xml 布局文件的主线程中做了太多工作

    我正在制作一个 9x9 数独网格 其中 81 个单元格本身就是一个 3x3 网格 单个细胞看起来像这样 1 2 3 4 5 6 7 8 9 每个数字代表该单元格的铅笔注释 我有一个名为 cell layout xml 的文件 表示这种 3x
  • 在 ChromeO 上安装未知来源的 apk

    我今天早上更新了我的 Chromebook Asus Flip 以获取 Play 商店 我的 Chromebook 安装了 M53dev 通道版本 它运作良好 我可以安装并运行从 Play 商店下载的 Android 应用程序 我想测试我的
  • 拖动时跳转 ImageView。 getX() 和 getY() 值正在跳跃

    我创建了一个用于拖动视图的 onTouchListener 如果我使用的话 图像可以顺利拖动getRawX and getRawY 问题是 当您向下放置第二个指针然后抬起第一个指针时 图像将跳转到第二个指针 此 onTouchListene
  • 当满足条件时,如何以编程方式更改 ImageButton src 目标?

    我有一个学校项目 我正在尝试开发一个手电筒应用程序 对于开 关 ImageButton 我想要 4 个自定义图像 如果手电筒关闭 turn on png 默认 turn on pressing png 按下状态 true 如果手电筒打开 t
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • Fragment 问题中的 ExpandableListView

    我正在尝试在片段中实现可扩展列表视图 没有错误出现 当我尝试记录两个的输出时List
  • ADB TCPIP 连接问题

    我有两台 Galaxy S3 其中一个已扎根 另一个则未扎根 因此 当我尝试通过本地网络连接它们时 计算机可以看到已root的计算机 但是正常的就卡在tcpip这一步了 所以 我写 adb tcpip 5555 It says restar
  • 从ListView中隐藏行而不占用空间

    我有一个带有关联 ArrayAdapter 的 ListView 它在多个活动中显示其内容 不幸的是 现在有必要 我的 ListView 在其中一项设置中不显示其所有元素 而仅显示 属性 未设置为 true 的元素 我想避免使用两个具有不同
  • HMS 核心地图套件在我的 Android 应用程序上根本无法工作

    我正在尝试在我的应用程序中使用华为 HMS 地图套件 我对整体地图很陌生 无论是来自谷歌还是华为 我按照文档中的教程以及华为提供的代码实验室中的说明进行操作 并将我的代码在一起 但是当我运行地图活动时 什么也没有出现 我得到的只是一个空白活
  • 透明 9patch 图像:显示出线条

    我得到了一个透明的 9 补丁图像 其中有 9 条补丁线显示槽 This is the output 显然我不希望水平线可见 这就是我创建 9patch 的方式 This is the final image that is used in
  • Android -room 持久库 - DAO 调用是异步的,因此如何获取回调?

    从我读到的Room 不允许您在主线程上发出数据库查询 因为可能会导致主线程延迟 所以想象一下我正在尝试更新 UI 主线程上的文本视图 其中一些数据我将如何得到回调 让我给你举个例子 想象一下 我想将我的业务模型数据存储到一个名为 事件 的对
  • 如何使用 SharedPreferences 保存多个值?

    我正在开发一个字典应用程序 在我的应用程序中 我假设用户想要保存最喜欢的单词 我决定使用共享首选项保存这些值 我知道 SQLite 和文件更好 但我坚持使用 SharedPreferences 所以继续使用它 下面是我的代码 Overrid
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 在运行时更改用作背景的 Drawable xml 内的形状纯色

    我有一个 Drawable xml 文件 background xml
  • 如何通过 Android 按钮单击运行单独的应用程序

    我尝试在 Android 应用程序中添加两个按钮 以从单独的两个应用程序订单系统和库存系统中选择一个应用程序 如图所示 我已将这两个应用程序实现为两个单独的 Android 项目 当我尝试运行此应用程序时 它会出现直到正确选择窗口 但是当按
  • 哪个视图最亮?

    在Android中 哪个是轻量级视图 例如 View Textview Edittext 等 在某些情况下 我们需要使用视图来填充区域而不向用户显示视图 同时屏幕加载速度应该很快 您可以使用空间 android widget Space S
  • onTaskRemoved() 在华为和小米设备中没有被调用

    我一直在使用onTaskRemoved 服务中的方法 用于检测应用程序何时通过滑动从设备最近列表中删除 我执行一些日志记录和发生这种情况时需要执行的一些其他操作 它工作完美 然后我在运行Android 6 0的华为设备上检查了这个方法 该方
  • Android 标记如何实现拖放?

    你好 我正在 Android 中开发 MapView 应用程序 我有三个标记 我希望稍后能够使用 Google Map API getlocation function 为了尝试一下 我想使用拖放功能移动标记 然后检查位置 任何人都可以通过
  • Android-dispatchTouchEvent 给了我一个 StackOverflowError

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • 丢失应用程序的密钥库文件(但已启用 Google Play 应用程序签名)

    我已经失去了原来的keystore用于签署我的应用程序的文件 我的应用启用了 Google Play 应用签名 如果我联系 Google 支持人员 是否可以重置密钥 以便我可以继续上传到此包 我希望我可以做到这一点 因为应用程序签名已启用

随机推荐

  • 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并且没有安装应用程序