【问题标题】:Android: Does passing values through static variable cause securtiy issues?Android:通过静态变量传递值会导致安全问题吗?
【发布时间】:2018-08-11 13:31:57
【问题描述】:

从其他技术角度关注通过静态变量传递值here,但是我想知道是否在所有应用程序范围内使用静态变量作为全局变量会导致安全问题或信息泄漏,因为 android 应用程序在独立沙箱中运行?

【问题讨论】:

  • static 变量仍在您的进程中。如果有的话,它们比Intent extras 更安全,因为Intent 的大多数使用会导致它被转移到另一个进程。如果“所有应用范围”是指“整个设备”,那是不正确的。
  • @CommonsWare 1) 我没有正确理解这一点。你的意思是Intent 可以说不如static variables 安全? 2)来自all application scope 我的意思是静态变量是共享的,应用程序内的每个人都可以看到它。 3)顺便说一句,如果一个应用程序有多个进程,它们之间共享静态变量还是每个进程持有不同的静态变量实例?

标签: android security static-variables


【解决方案1】:

你的意思是 Intent 可以说不如静态变量安全?

每当您在Context 上调用startActivity()startService()bindService()sendBroadcast() 时,Intent 都会离开​​您的进程,进入核心操作系统进程,然后进入任何包含的进程您尝试使用的组件。这包括调用该方法的组件与其尝试使用的组件位于同一进程中的情况。在其他条件相同的情况下,static 变量更安全,因为它不会离开进程(除非您自己这样做)。

据我们所知,Intent 对象对于间谍是安全的。不过这方面过去一直有bug,不排除以后有bug的可能。

在所有应用程序范围内,我的意思是静态变量是共享的,应用程序内的每个人都可以看到它

您对应用程序中的所有代码负责,框架实现除外。

如果一个应用程序有多个进程,它们之间共享静态变量

没有。

或者每个进程都持有不同的静态变量实例?

是的。

【讨论】:

  • 我不明白为什么我应该在意图之间传递数据而不是使用静态变量。有什么想法吗?
  • @ruben:当您的进程消失时,静态变量会丢失。即使您的 UI 移到后台,您的进程也可能消失,即使用户快速返回您的应用程序也是如此。在这种情况下,Intent 数据与保存的实例状态 Bundle 一样,为您的应用提供可用于重建 UI 的数据,因此用户不会注意到您的进程终止导致的任何问题。
  • 好吧有道理。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 2017-04-14
  • 2022-08-20
  • 2014-11-10
  • 1970-01-01
相关资源
最近更新 更多