Android Paylaşılan Tercih güvenliği


118

Paylaşılan tercihler güvenliğini merak ediyorum.

MODE_PRIV (0) içinde oluşturulmuş olsalar bile paylaşılan tercihlere erişim elde etmek mümkün müdür?
Mevcut tüm paylaşılan tercihleri ​​listelemek ve ardından diğer uygulamalardan tüm ayarları almak mümkün müdür?
Paylaşılan tercihler, parola veya kimlik doğrulama belirteci gibi hassas verileri koymak için iyi bir yer mi?

Teşekkürler



Güzel cevaplarla bir göz atmaya değer. Paylaşılan tercihler, geliştiricinin programlama stili hakkında çok şey söylüyor.
Vishwa Ratna

Yanıtlar:


232

Paylaşılan Tercihler, cihazdaki dosya sisteminde bir dosya olarak saklanır. Varsayılan olarak, uygulamanın veri dizininde, yalnızca belirli uygulamanın birlikte çalıştığı UID'nin bunlara erişmesine izin veren dosya sistemi izinleri ile depolanır. Dolayısıyla, herhangi bir Linux / Unix sisteminde olduğu gibi, Linux dosya izinleri bunlara erişimi kısıtladığı için özeldirler.

Cihaza kök düzeyinde erişimi olan herkes, kök dosya sistemindeki her şeye erişebildiği için bunları görebilir. Ayrıca, oluşturulan uygulama ile aynı UID ile çalışan herhangi bir uygulama bunlara erişebilir (bu genellikle yapılmaz ve iki uygulamanın aynı UID ile çalışmasını sağlamak için belirli bir işlem yapmanız gerekir, bu nedenle bu büyük olasılıkla büyük değildir. ilgilendirmek). Son olarak, eğer birisi cihazınızın dosya sistemini kurulu Android işletim sistemini kullanmadan bağlayabildiyse, erişimi kısıtlayan izinleri de atlayabilir.

Tercihlerinize (veya uygulamanız tarafından yazılan herhangi bir veriye) bu tür erişim konusunda endişeleriniz varsa, şifrelemek isteyeceksiniz. Onlar hakkında bu kadar endişeliyseniz, gördüğünüz risk seviyesi için tam olarak ne kadar korumanın gerekli olduğunu bulmanız gerekecektir. Bununla ilgili olarak , henüz Aralık 2011'de yayınlanan Android Platform için Uygulama Güvenliği'nde çok kapsamlı bir tartışma var (sorumluluk reddi: Bu kitabın yazarıyım).


2
Bundan bahseden herhangi bir resmi belge var mı? Referanslarınız var mı?
clu

26

Paylaşılan Tercihler, telefonlarınızdaki / verilerinizdeki / verilerinizdeki / klasörünüzdeki XML dosyalarından başka bir şey değildir, bu nedenle, köklü bir cihazda süper kullanıcı ayrıcalıklarına sahip herhangi bir uygulama veya kullanıcı, MODE_PRIV ile oluşturulmuş olsalar bile, Paylaşılan Tercihlerinize erişebilir.

Yine de onu herkesten korumanın bir yolu var ... Lütfen bu bağlantıya göz atın. Burada verileri şifreleme ile önceden saklayabilirsiniz, sınıf kendi kendini açıklayıcıdır ve kullanımı çok kolaydır.

https://github.com/sveinungkb/encrypted-userprefs

Başkalarının söylediği gibi, herkes ona erişebilir ancak bu durumda şifreli olduğu için kimse içindeki verileri okuyamaz. Onun secure.For Yani azami güvenlik önerim çalışma zamanında yerine sert kodlama de şifreleme için kullanılan anahtar oluşturmak olacaktır. Bunu yapmanın birçok yolu var :)


8
o zaman oluşturulan anahtarı nasıl kaydedersiniz?
Olayinka

3
@Olayinka Bunu başka bir anahtarla şifrelemek ve bir SharedPref. Peki diğer anahtarla ne yapmalı? Cidden olsa da, en iyi senaryo, şifrelenmiş anahtarı ve bir aygıt UID'sini, orada saklanmak ve gerektiğinde geri almak üzere SSL kullanan bir sunucuya göndermek olacaktır. Bu bağlantı gerektirir, ancak bir cihazı kara listeye almanıza ve aniden tüm verileri çöpe atmanıza izin verir. Sürekli internet bağlantısı olmadan, verileri şifrelemeye yönelik hiçbir girişim% 100 güvenli değildir.
Paulo Avelar

Yukarıdaki çözümü kullandım ... 10 üzerinden 9'u çalışıyor ... ama hata alıyorum: 1e06b065: Şifreleme işlevleri: EVP_DecryptFinal_ex: BAD_DECRYPT "Bazen ... Herhangi birinin bir fikri var mı?
Raj Trivedi

3
@PauloAvelar Kriptografik anahtarların uzun süreli depolanması ve alınması için Android KeyStore'u kullanın. Anahtarlar bir uygulamada saklanmaz, bu nedenle tehlikeye atılamazlar. Sağlanan kitaplık onu kullanmaz. Sırrı kodda saklar, bu nedenle güvenli değildir.
apex39

13

Normalde, hayır, onlar ancak, SharedPreferences XML dosyaları olarak saklanır dikkat etmelidir, diğer uygulamalar tarafından erişilemez /data/data/olduğunu esasen vasıta dizinde, herhangi birlikte uygulama superuser hakları bir üzerinde köklü cihazla olabilir sizin erişmek SharedPreferenceolduklarını bile, s ile oluşturulduMODE_PRIV


3

MODE_PRIV (0) içinde oluşturulmuş olsalar bile paylaşılan tercihlere erişim elde etmek mümkün müdür?

Kodla Hayır. Ancak süper kullanıcı ayrıcalığına sahipseniz uygulama dosyasını alabilirsiniz.

Mevcut tüm paylaşılan tercihleri ​​listelemek ve ardından diğer uygulamalardan tüm ayarları almak mümkün müdür?

Süper kullanıcıysanız (köklü cihazlar), uygulamanın tüm özel dosyalarını çekebilirsiniz.

Paylaşılan tercihler, şifre veya kimlik doğrulama belirteci gibi hassas verileri koymak için iyi bir yer mi?

Hayır. Kolayca hacklenebilir. Herhangi bir hassas veriyi paylaşılan öncelik dosyasına koymak isterseniz, verileri şifreleyebilir ve depolayabilirsiniz. Şifreleme anahtarınızı NDK / sunucuda saklayabilirsiniz.


Nasıl kolayca hacklenebilir?
John Sardinha

Evet soru formu @Jo
Cuong Vo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.