如何保护 Android 共享首选项的安全?

2023-12-05

常见的位置在哪里SharedPreferencesAndroid应用程序中存储的内容是:

/data/data/<package name>/shared_prefs/<filename.xml>

具有 root 权限的用户可以导航到该位置并可以更改其值。保护它的需要非常重要。

我们可以用多少种方式加密整个shared_pref's xml file?

我们都知道我们可以加密并保存数据shared_pref's xml文件,但这不仅是 100% 安全,因此需要使用密钥加密整个文件。需要帮助了解加密整体的各种方法xml文件。这是一般性问题,这里讨论的各种加密方法作为答案可以帮助所有开发人员保护应用程序。


更新的答案:

Android 发布了一个安全库加密共享首选项在他们的 Jetpack 库中。

编辑:使用 v1.1.0 版本,您可以支持棒棒糖(API 级别 21)以上

String masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);

SharedPreferences sharedPreferences = EncryptedSharedPreferences.create(
    "secret_shared_prefs",
    masterKeyAlias,
    context,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);

// use the shared preferences and editor as you normally would
SharedPreferences.Editor editor = sharedPreferences.edit();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保护 Android 共享首选项的安全? 的相关文章

  • 匿名、身份验证、模拟和委派之间有什么区别,为什么委派需要 Kerberos?

    当我们的客户安装我们的软件时 他们通常选择 拆分安装 其中服务在一个机器上运行 数据库在另一个机器上 这些服务可能与其他服务通信 或者数据库可能包含需要与另一个数据库通信的存储过程 这将我们带入了 Kerberos 和 SetSPN 的黑暗
  • Twowayview 滚动时自动添加内边距

    我在用双向视图 https github com lucasr twoway view在我的一个项目中 这是android的扩展回收者视图 https developer android com reference android supp
  • 如何将Android中的cURL发送到REST服务

    我是 android 新手 我想从 REST 服务获取一些数据 但在初始化发送到 REST 服务的方法时遇到一些问题 您知道 REST 服务使用 cURL 来操作一些数据 POST PUT GET DELETE 现在如何在 android
  • Android 片段之间的阴影分隔符

    我有一个类似于平板电脑的 ICS Gmail 应用程序的布局 ListFragment左边是内容 右边是内容 我想知道如何构建布局 使两个片段之间有一个阴影分隔符 就像在 Gmail 应用程序中一样 如下所示 另外 由于这适用于这个问题 我
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • Android Studio 安装失败,APK 未签名

    最近从 Eclipse 更改为 Android Studio 我还更改了 JDKjava open jdk to jdk1 7 0 45 现在我尝试运行我的第一个应用程序 并收到以下消息 Installation failed since
  • startActivityForResult中的requestCode是什么意思

    我想知道我是否正确理解 requestCode 的概念 这个整数的用途是什么 我将其设置为哪个整数有关系吗 private static int CAMERA REQUEST 谢谢 requestCode 可帮助您识别您从哪个 Intent
  • Android WebView文件上传

    我正在开发一个 Android 应用程序 基本上它是一个WebView和一个进度条 Facebook 的移动网站 m facebook com 已加载到WebView 当我单击 选择文件 按钮上传图像时 没有任何反应 我已经尝试了所有的解决
  • ProgressBar.setInminateDrawable() 不起作用

    当我尝试更改我的 indeteminateDrawable 进度条就消失了 我必须更改我的进度条的可绘制对象 我尝试了invalidate requestLayout等 我不知道如何解决它 谢谢 这里的代码 progressBar setI
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • 数据未刷新“DynamiteModule:未找到 com.google.firebase.auth 的本地模块描述符类”

    我已经使用 Firebase 很长时间了 到目前为止 除了以下场景之外 一切都很好 有时我注意到我的应用程序不再获取新数据 我正在用一个活跃的监听器监听变化 并且我确实有keepSynced set to true 发生这种情况时 我会在日
  • 垂直从上到下线手势检测器

    我用的是 手势工具 注意到对于垂直从上到下的线无法检测 因为我在代码中使用生成的手势文件 如下所示 但无法检测垂直从上到下的线手势检测 import java util ArrayList import android app Activi
  • Android:如果任务管理器终止,则重新调用应用程序

    如果应用程序线程被任务管理器杀死 则应用程序线程将关闭 需要重新调用应用程序 就像它被其他应用程序或任务管理器杀死一样 任何想法 您必须使用 START STICKY 命令运行后台服务 只需扩展 Service 并重写 onCommand
  • phonegap html5 android 同步文件系统 IO

    如何使用 PhoneGaps 文件系统 API 同步读写文件 有可用的同步包装器吗 无法通过提供的 api 同步访问文件 从phonegap的实现方式猜测 我怀疑您是否可以编写一个插件来同步执行此操作
  • 如何使用 MotionLayout 调整 TextView 的大小

    我正在尝试创建一个CollapsingToolbar动画使用MotionLayout 我已经成功地将所有内容设置为动画 使其表现得像CollapsingToolbar具有高度的灵活性 这意味着我可以轻松创建很棒的动画 而无需编写大量代码 我
  • Android OptionsMenu问题,背景始终透明

    我的选项菜单总是不显示背景 背景是透明的 有谁知道如何摆脱这个 我的失败起源活动是从另一个自定义活动扩展的 我在 eclipse 上有这个项目 选项菜单工作正常 但自从我迁移到 AndroidStudio 后 选项菜单始终是透明的 我尝试更
  • 分离 Fragment 和删除 Fragment 有什么区别?

    在 Android 文档中碎片交易 http developer android com reference android app FragmentTransaction html我注意到两种非常相似的方法 detach and remo
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • 传递 Android DialogFragment 参数时,onCreateDialog 捆绑参数意外为 null

    我正在尝试使用 DialogFragment 在 Android 中显示一个基本对话框 并使用对话框消息的参数 如中所述StackOverflow线程 https stackoverflow com questions 15459209 p

随机推荐

  • 使用 AngularJS 和 Slim PHP 进行路由

    我一直在使用 AngularJS 并且正在尝试将我的应用程序连接到它 到目前为止 我已经使用了 Slim PHP 可以从 MySql 数据库中获取所有记录 但无法获取特定记录 我已经编写了 PHP 代码 可以导航到 requests 并获取
  • 如何将库导入到 NetBeans 中的 Java 项目?

    我需要一个可以使用 Double 或 Float 数字而不是 int 数字创建多边形的类 嗯 我找到了here and 这是Jar文件下载 我提取了 Jar 并将其添加到 NetBeans 中的库中 但现在 我不知道如何将包导入到我的项目中
  • Freemarker 编码 - 用问号代替重音字符

    我正在尝试使用 Freemarker 打印重音字符 但在重音字符的位置 我只得到问号 我已经证实 以下陈述成立 UTF 8 Environment getCurrentEnvironment getConfiguration getDefa
  • 具有多个 gitlab 用户帐户的多个密钥的 SSH 配置

    我在我的服务器上运行 Gitlab CE 并使用多个不同的用户帐户按兴趣对我的存储库进行分组 问题出在 SSH 上 我在github上找到了以下解决方案 https gist github com jexchan 2351996 在本指南中
  • 二叉搜索树递归插入不显示任何内容

    我正在对二叉搜索树进行小型 Java 工作 但是当我实现将节点递归插入到树中并显示它时 我什么也得不到 我已经研究了一段时间了 我不确定 但我认为这是一个传递引用的问题 这是我的代码 public class BST private BST
  • 如何在ios中迭代JSON对象

    我像这样创建 json 对象 id json NSJSONSerialization JSONObjectWithData data options kNilOptions error error 但文档没有告诉我如何循环json对象由键和
  • C - malloc 分配过多内存

    运行 int 一个奇怪的场景 其中 malloc 分配的内存比我要求的多 void function int array int numberOfElements int secondArray malloc sizeof int numb
  • Servlet 过滤器:非常简单的限速过滤器,允许突发

    我想添加一个非常简单的过滤器 对每个 IP 进行速率限制 但仍然允许突发 有点像iptables允许做 我不想安装整个厨房水槽 我需要的只是一个实现该功能的 Filter 类 什么是允许执行简单的 速率限制但允许短突发 的良好数据结构 算法
  • RegSvr32.exe 的 /n 和 /i 参数有什么不同?

    要注册 COM 服务器 我们在提升模式下运行类似的命令 regsvr32 exe com dll 要执行每用户注册 请在用户帐户中执行 regsvr32 exe n i user com dll regsvr32 exe 支持以下参数 u
  • 在 Python 日志记录中跨多个模块访问记录器

    我有一个关于 python 日志记录模块的小问题 我有一个简单的记录器 记录器 basicConfig 如何使用 getLogger 访问同一个记录器 或者 getLogger 是否为我提供了一个我可以访问的日志记录对象 如果是这样 我如何
  • 在Python中比较整数中的数字

    这里确实需要一些帮助 学习 Python 的超级早 目标是获取一个数字并查看数字是否按升序排列 到目前为止我所拥有的是 a int input Enter a 4 digit number b int i for i in str a if
  • 转换日期格式 yyyy-MM-dd'T'HH:mm:ss.SSS

    我有几个NSDate包含符合此格式的值的对象yyy MM dd T HH mm ss SSS 当我尝试转换为不同的格式时 例如MMM dd yyyy HH mm格式化程序总是返回nil 但是 如果我对字符串值进行硬编码 我将通过NSDate
  • Moq 模拟和跟踪会话值

    我在使用 Moq 进行模拟返回会话值集时遇到问题 使用以下内容 public class TestHelpers public long sessionValue 1 public HttpContextBase FakeHttpConte
  • 我的网页周围的 CSS 边框

    我目前在网站周围定位边框时遇到一些问题 我目前正在托管该网站here 我想要一个黄色边框围绕身体 但距离边缘大约 20 30 像素 我还希望边框具有响应能力 因此当我调整浏览器大小时 边框也会跟随 我尝试过的所有方法都不起作用 有人知道我需
  • 检查目标 c 中的字符串是否为回文

    我正在尝试检查字符串是否是回文或不使用 Objective C 我是编程新手 没有任何其他编程语言的经验 所以请耐心等待 我陷入了 if 条件 我想让它说 如果字符串中的第一个位置等于最后一个位置 则字符串是回文 我究竟做错了什么 int
  • 如何将 SOAP 响应转换为 PHP 数组?

    我无法将 SOAP 响应转换为 php 中的数组 这是代码 response client gt doRequest xmlRequest location action 1 这是 SOAP 响应
  • Boost DFS如何保存访问过的顶点?

    我正在看解决方案here 这对我不起作用 但在 行下阅读以实际查看当前问题 I tried boost undirected dfs G vertex 0 G boost visitor vis 但我得到 error C2780 void
  • 出现错误无法解析对程序集 System.Web 的依赖关系

    我不得不更换我的主硬盘 昨天我的 HD 被我们的 IT 技术人员更换了 所以今天 在安装 VS 2015 后 我开始开发我们一直在开发的 WPF 应用程序 我进入了该项目 从 TFS 获取最新信息并进行了构建 我失败并出现以下错误 无法解析
  • 跨 Qt 线程共享数据

    我是 Qt 的新手 所以请原谅问题的简单性 但我对 Qt 线程有点困惑 假设我有 3 个线程 主默认 GUI 线程和我自己创建的 2 个线程 称为 WorkerThread 我的每个 WorkerThreads 都继承自 QThread 并
  • 如何保护 Android 共享首选项的安全?

    常见的位置在哪里SharedPreferencesAndroid应用程序中存储的内容是 data data