Android 是共享引用';s模式\u多\u进程不如模式\u私有进程安全
没有说明任何关于模式\u多\u进程是否安全(安全方面)的内容Android 是共享引用';s模式\u多\u进程不如模式\u私有进程安全,android,process,sharedpreferences,Android,Process,Sharedpreferences,没有说明任何关于模式\u多\u进程是否安全(安全方面)的内容 那么,它安全吗?有理由不使用它吗?我想它不安全 该文档还指出:“这是姜饼(Android 2.3)中及其之前的遗留(但未记录)行为,在针对此类版本时暗示此标志。对于针对高于Android 2.3的SDK版本的应用程序,如果需要,必须显式设置此标志。”这似乎是他们不鼓励使用的旧功能。此标志与安全性无关,但与访问Concurence有关。效率较低,但应尽量避免多个进程(来自同一应用程序)访问底层文件所导致的问题。如果不编写多进程应用程序,
那么,它安全吗?有理由不使用它吗?我想它不安全
该文档还指出:“这是姜饼(Android 2.3)中及其之前的遗留(但未记录)行为,在针对此类版本时暗示此标志。对于针对高于Android 2.3的SDK版本的应用程序,如果需要,必须显式设置此标志。”这似乎是他们不鼓励使用的旧功能。此标志与安全性无关,但与访问Concurence有关。效率较低,但应尽量避免多个进程(来自同一应用程序)访问底层文件所导致的问题。如果不编写多进程应用程序,则不需要它。如果需要,文档建议使用其他进程间通信。出于性能原因,而非安全原因,文档建议不要使用它 因此,一方面
MODE\u PRIVATE
/MODE\u WORLD\u READABLE
/MODE\u WORLD\u WRITEABLE
,另一方面MODE\u MULTI\u PROCESS
是正交标志。如果您打开SharedReferences
,方法是:
-->安全MODE\u PRIVATE
-->不安全MODE\u WORLD\u READABLE
-->安全MODE|u PRIVATE | MODE|u MULTI|u进程
-->不安全MODE_WORLD_READABLE|MODE_MULTI_进程
MODE_PRIVATE
的值为0:MODE_MULTI_进程
相当于MODE_PRIVATE | MODE_MULTI_进程
(即安全)
实际上,MODE\u MULTI\u PROCESS
的源代码中唯一的用法是ContextImpl
类:
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
SharedPreferencesImpl sp;
synchronized (sSharedPrefs) {
sp = sSharedPrefs.get(name);
if (sp == null) {
File prefsFile = getSharedPrefsFile(name);
sp = new SharedPreferencesImpl(prefsFile, mode);
sSharedPrefs.put(name, sp);
return sp;
}
}
if ((mode & Context.MODE_MULTI_PROCESS) != 0 ||
getApplicationInfo().targetSdkVersion < android.os.Build.VERSION_CODES.HONEYCOMB) {
// If somebody else (some other process) changed the prefs
// file behind our back, we reload it. This has been the
// historical (if undocumented) behavior.
sp.startReloadIfChangedUnexpectedly();
}
return sp;
}
@覆盖
public SharedReferences GetSharedReferences(字符串名称,int模式){
SharedReferencesImpl sp;
已同步(sSharedPrefs){
sp=sSharedPrefs.get(名称);
如果(sp==null){
文件prefsFile=getSharedPrefsFile(名称);
sp=新的SharedReferencesImpl(预文件,模式);
sSharedPrefs.put(名称,sp);
返回sp;
}
}
if((mode&Context.mode\u MULTI\u PROCESS)!=0||
getApplicationInfo().targetSdkVersion
有一种机制可以防止来自外部进程的访问:SharedReferences是应用程序私有的。Android安全模型阻止其他应用程序访问该文件,即使它们可以让别人知道其名称(相信我,这并不容易)。我不确定情况是否如此。。。跨进程访问共享pref有时非常方便。它不再是默认行为这一事实并不意味着它不安全,似乎没有任何机制来阻止其他外部进程的访问。。。除了不知道名称之外……我同意文档中所说的,但是文档中没有提到安全性并不意味着它不是一个问题。请解释一下,使用MODE_MULTI_流程保存敏感数据应该安全吗?安卓的文档中有没有提到这种机制?