【问题标题】:How secured is giving input data to WorkManager's Worker?向 WorkManager Worker 提供输入数据的安全性如何?
【发布时间】:2020-12-21 02:33:10
【问题描述】:
    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(可以在与请求入队不同的进程中运行)?

【问题讨论】:

    标签: android android-workmanager


    【解决方案1】:

    任何具有root 访问权限的人都可以阅读它吗? 是的。

    WorkManager 使用房间数据库来保存其所有数据以保证工作人员的执行,包括输入/​​输出数据以及您在工作人员执行期间发布的任何进度。

    您可以使用 Android Studio 中的数据库检查器查看 WorkManager 存储了哪些数据。

    您可以将加密格式的 apiKey 作为输入数据传递,并仅在需要时在 Worker 中对其进行解密。或者,您可以使用 Dagger/Hilt 或您可能在应用中使用的任何其他 DI 系统将 apiKey 作为附加参数传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多