如何在Android中安全地存储访问令牌和秘密?

2023-11-27

我将使用 oAuth 从 google 获取邮件和联系人。我不想每次都要求用户登录以获取访问令牌和秘密。据我了解,我需要将它们与我的应用程序一起存储在数据库中或SharedPreferences。但我有点担心安全方面的问题。我读到您可以加密和解密令牌,但攻击者很容易反编译您的 apk 和类并获取加密密钥。
在 Android 中安全存储这些令牌的最佳方法是什么?


将它们存储为共同的偏好。这些默认情况下是私有的,其他应用程序无法访问它们。在 root 设备上,如果用户明确允许访问某些尝试读取它们的应用程序,则该应用程序可能能够使用它们,但您无法防止这种情况。至于加密,您必须要求用户每次都输入解密密码(从而破坏了缓存凭据的目的),或者将密钥保存到文件中,并且您会遇到同样的问题。

存储令牌而不是实际的用户名密码有一些好处:

  • 第三方应用程序不需要知道密码,用户可以确保他们只将其发送到原始网站(Facebook、Twitter、Gmail 等)
  • 即使有人窃取了令牌,他们也看不到密码(用户也可能在其他网站上使用密码)
  • 令牌通常有生命周期,并在一定时间后过期
  • 如果您怀疑令牌已被泄露,可以撤销令牌
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Android中安全地存储访问令牌和秘密? 的相关文章

  • Android 卷页动画

    我对 Android 动画有点陌生 目前我正在开发一个故事活动 需要像 iPhone 中那样使用卷页动画 我发现 iPhone 中有一种方法可以做到这一点 但我仍然找不到在android中做的方法 所以请帮我解决这个问题 谢谢大家 谷歌代码
  • PopupWindow onitemclick 中的 Android Listview 在某些设备上不起作用

    我的 ListView 在 PopupWindow 内 当我显示 PopupWindow 并单击设备 ASUS K00z 中的 Listview 行时 fonepad 工作得很好 但在 HTC Z715e 中不起作用 项目单击事件未触发 1
  • AltBeacon 服务位于单独的 Android 进程中

    我需要帮助 有一个适用于 Xamarin Android 的应用程序 在其中 启动了一个与 AltBeacon 库配合使用的服务 在此服务中 创建了一个线程 在该线程中不断扫描信标 服务以 StartForeground 启动 该服务应该有
  • 如何在其他呼叫运行时以编程方式合并呼叫(电话会议)

    我的要求是这样的 假设我当时正在拨打一个号码 并且我想以编程方式拨打另一个号码 到目前为止 我所做的是 当某些呼叫已经进行时 我能够呼叫特定号码 例如 假设我正在拨打号码 123 1 分钟后 通过使用Alarm Manger我触发一个事件来
  • Android Studio 安装失败,APK 未签名

    最近从 Eclipse 更改为 Android Studio 我还更改了 JDKjava open jdk to jdk1 7 0 45 现在我尝试运行我的第一个应用程序 并收到以下消息 Installation failed since
  • ProgressBar.setInminateDrawable() 不起作用

    当我尝试更改我的 indeteminateDrawable 进度条就消失了 我必须更改我的进度条的可绘制对象 我尝试了invalidate requestLayout等 我不知道如何解决它 谢谢 这里的代码 progressBar setI
  • 垂直从上到下线手势检测器

    我用的是 手势工具 注意到对于垂直从上到下的线无法检测 因为我在代码中使用生成的手势文件 如下所示 但无法检测垂直从上到下的线手势检测 import java util ArrayList import android app Activi
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • Android 媒体播放器搜索栏

    我有一个创建 播放和处理媒体播放器 只是音频 的服务 但我在主要活动中有一个搜索栏 我想自然地显示音频文件的进度并允许用户搜索到不同的位置 我花了很长时间才弄清楚 将 UI 中的搜索栏连接到服务中的媒体播放器的最佳或正确方法是什么 我将这样
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • phonegap html5 android 同步文件系统 IO

    如何使用 PhoneGaps 文件系统 API 同步读写文件 有可用的同步包装器吗 无法通过提供的 api 同步访问文件 从phonegap的实现方式猜测 我怀疑您是否可以编写一个插件来同步执行此操作
  • 将触摸事件从 NestedScrollView 传递到父视图

    我在 NestedScrollView 下方有一个 ViewPager 宽度一些顶部填充 以及 ClipToPadding false 和透明背景 如图像 我的 ViewPager 无法获取触摸事件并且无法工作 我怎么解决这个问题 我无法更
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 如何从图库动态卸载图像?

    我有自定义 ImageView public class ShadowedImageView extends ImageView private Paint mPaint public Bitmap bitmap null private
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • 传递 Android DialogFragment 参数时,onCreateDialog 捆绑参数意外为 null

    我正在尝试使用 DialogFragment 在 Android 中显示一个基本对话框 并使用对话框消息的参数 如中所述StackOverflow线程 https stackoverflow com questions 15459209 p
  • 如何解决android程序中的警告“从不本地读取”

    为什么我收到警告说 The field testscreen ScaleAnimToShow mVanishAfter is never read locally testscreen java testscreen src com tes
  • Android Studio 中自动打开“运行设备”选项卡

    在 Android Studio Flamingo 中有一个名为跑步设备并且它会在每次之后自动打开运行应用程序 有办法禁止这个自动打开吗 我尝试禁用启用物理 Android 设备的镜像选项 但选项卡仍然自动打开 基于此issue https
  • Android 版本低于 Lollipop 时出现 java.lang.NoClassDefFoundError

    我有一台运行 Android 21 的 Nexus 5 设备 我正在测试我的项目 没有任何问题 但是 如果我使用 Google API 19 在模拟器上进行测试 则会显示错误java lang NoClassDefFoundError 如果

随机推荐

  • 多线程程序中的 std::atomic memory_order_relaxed VS 易失性 sig_atomic_t

    Does volatile sig atomic t提供任何内存顺序保证吗 例如 如果我只需要加载 存储一个整数可以使用吗 例如 这里 volatile sig atomic t x 0 void f std thread t x 1 wh
  • 如何在 Azure 数据工厂 v2 中解压缩 zip 文件

    我正在尝试使用 Azure 数据工厂 v2 解压缩 zip 文件 内部有多个文件 该 zip 文件位于 Azure 文件存储中 ADF 复制任务仅复制原始 zip 文件而不解压缩它 关于如何进行这项工作有什么建议吗 这是当前的配置 zip
  • onclick 事件在 ipad 和平板电脑上不起作用

    onClick 事件在平板电脑 ipad 上不起作用 它在 PC 浏览器上完美工作 但不适用于触摸事件 我尝试了 binding on 和很多东西 但它们没有给出 100 的结果 我怎样才能让它在ipad 平板电脑上工作 div alt d
  • 更新存储在 SQL Server 中 XML 列中的 XML

    我在 SQL Server 2012 中有一个示例表 我正在运行一些查询 但是 modify XQuery 方法正在执行但未更新 这是表格 为此 只需尝试将设置更新为 NewTest 这将执行但没有任何更新 谢谢你的帮助 由于有一个XML命
  • 如何在java 8中迭代对象数组列表并将其设置为另一个对象列表?

    目前 我有该数组中的对象数组列表 我必须迭代并添加到我的列表中LatestNewsDTO我在下面的代码中所做的工作有效 但我仍然对我的方式不满意 他们有什么有效的方法请告诉我 Thanks List
  • 如何使用实际的 404 状态代码响应替换 Blazor 默认的“软 404”

    Blazor 处理 404 的默认方法是在 App razor 中创建软 404 但我希望遵循搜索引擎最佳实践 在 Azure 上显示 404 页面时实际返回 404 状态代码 我尝试删除 App razor 中的元素 看看是否可以强制返回
  • 替换sql数据透视表中的空值

    我有以下查询 SELECT FROM Table1 PIVOT SUM Value FOR Period IN 06 1 2007 07 1 2007 AS p 返回的一些行为空 但我想将它们替换为 0 我试过了SUM ISNULL Val
  • 根据列条目(或排名)对数据框进行子集化

    我有一个像这样简单的 data frame id group idu value 1 1 1 1 34 2 1 2 1 23 3 1 3 1 67 4 2 4 2 6 5 2 5 2 24 6 2 6 2 45 1 3 1 3 34 2 3
  • 如何获取已选择的片段

    我正在使用片段创建一个选项卡应用程序 我已成功创建选项卡 但现在我需要在选择特定片段时创建一个对象 例如当我选择SettingsTab我需要调用一个定义在Test class 并同样摧毁 SettingsTab package com ex
  • 以逗号分隔,但仅当不在括号中时

    我正在尝试用逗号分隔符对字符串进行分割 my string ab 12 20100401 xyz A B my array split string 如果我按照上面的方式进行分割 数组将有值 ab 12 20100401 xyz A B 我
  • 程序类型已存在:com.google.android.gms.common.api.zzf

    当我在 android studio 中运行我的应用程序时 出现以下错误 程序类型已存在 com google android gms common api zzf firebase 核心警告 gt 所有 gms firebase 库必须使
  • C++:auto_ptr + 前向声明?

    我有一堂这样的课 class Inner class Cont public Cont virtual Cont private Inner m inner 在 cpp 中 构造函数创建一个实例Inner with new和析构函数dele
  • Flask Admin 使用自定义按钮扩展“选择”下拉菜单

    Im using the built in view of flask admin As you can see in the picture below 我尝试的很简单 我只想使用自定义按钮扩展下拉菜单 此按钮应对所有选定的项目执行某些操
  • 如何在 Blackberry 项目中添加外部 jar 或 zip 文件

    我想将 jar 文件添加到我的 BlackBerry 项目中 我尝试通过以下方式添加 jar 文件 gt 右键单击项目 gt 属性 gt 构建 gt 导入的 jar 文件 gt 添加 但之后 每当我尝试运行该应用程序时 我都会收到 模块 a
  • R 点云覆盖的区域

    我有一团分散在二维欧几里得空间中的点 我想计算连接云的最极端 外围 点的多边形内部的面积 换句话说 我想估计这个空间中云覆盖的面积 R中有公式吗 非常感谢您的任何回复 朱利安 这称为凸包问题 R内置chull函数应该完成这项工作 要计算面积
  • 上传到 App Store 的最低 Xcode 版本

    我目前使用的是Xcode7 出于兼容性原因我必须继续使用它 我是否应该预期 Xcode 7 很快就会与 App Store 不兼容 Xcode 版本每年四月更改一次 从 2023 年 4 月开始 您需要使用 Xcode 14 和 iOS 1
  • 将 FirebaseRecyclerViewAdapter 耦合到布尔/字符串 Map.Entry

    我正在使用FirebaseRecyclerViewAdapter来自com firebaseui firebase ui 0 2 0我的应用程序的许多位置都有库 我的问题是如何在查询参数返回多个 索引 条目值 Map Entry 的情况下应
  • 用渐变颜色绘制一条线

    是否可以使用渐变颜色画一条线 我希望能够绘制一条直线或曲线 如果可能 其中线的一端是蓝色 另一端是红色 此外 每行可能需要有多个渐变 例如颜色从蓝色 gt 绿色 gt 红色 我认为这可能只是由绘制在一起的多条渐变线组成 protected
  • java中Hashcode桶分布

    假设我需要在 Hashset 中存储 1000 个对象 那么我有 1000 个包含每个对象的存储桶 通过为每个对象生成唯一的哈希码值 还是有 10 个大致包含 100 个对象的存储桶更好 拥有唯一存储桶的第一个优点是我可以节省调用 equa
  • 如何在Android中安全地存储访问令牌和秘密?

    我将使用 oAuth 从 google 获取邮件和联系人 我不想每次都要求用户登录以获取访问令牌和秘密 据我了解 我需要将它们与我的应用程序一起存储在数据库中或SharedPreferences 但我有点担心安全方面的问题 我读到您可以加密