如何解决向 WorkManager 的 Worker 提供输入数据的安全性如何?
Data data = new Data.Builder()
.putString("APIKEY",apiKey)
.build();
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.UNMETERED).build();
WorkManager workManager = WorkManager.getInstance(AppContext.getApplicationContext());
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(UploadWorker.class).setInputData(data).setConstraints(constraints).build();
workManager.enqueue(workRequest);
发送给工作人员的 apiKey 有多安全? 由于保证 Worker 最终会运行,我猜他们将输入写入磁盘,那么具有 root 访问权限的任何人都可以读取它吗?还是以某种方式加密?如果这样做不安全,我们如何将 apiKey 安全转换到 Worker(可以在与请求入队不同的进程中运行)?
解决方法
任何拥有 root 访问权限的人都可以阅读它吗? 是的。
WorkManager 使用一个房间数据库来保存它的所有数据,以保证工作人员的执行,包括输入/输出数据以及您在工作人员执行期间发布的任何进度。
您可以使用 Android Studio 中的数据库检查器查看 WorkManager 存储了哪些数据。
您可以将 apiKey 以加密格式作为输入数据传递,并且仅在需要时才在 Worker 中对其进行解密。或者,您可以使用 Dagger/Hilt 或您可能在应用中使用的任何其他 DI 系统将 apiKey 作为附加参数传递。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。