说,我正在实施一个已安装的应用程序(桌面应用程序和Android应用程序),它将访问Google服务。为了避免用户多次登录,我决定将其requestToken
和accessToken
保存到他的本地设备。
在我经历了http://blog.doityourselfandroid.com/2011/08/06/oauth-2-0-flow-android/之类的几个教程之后,我发现这就是大多数人正在做的事情。
然而,我担心的是,这样做是否安全?如果黑客从用户本地设备获得保存的requestToken
和accessToken
怎么办?安全会受到损害吗?黑客可以假装是真正的用户吗?
注意,因为应用程序将是开源的。因此,任何人都可以访问特定Google API的clientID
和clientSecret
。
答案 0 :(得分:2)
我还在我的应用程序中使用了app令牌。我已使用私有模式将其保存到SharedPrefs:
final SharedPreferences prefs = getSharedPreferences(
"app token", Context.MODE_PRIVATE);
使用私有模式保存sharedPref时,只能由调用应用程序(或共享相同用户ID的所有应用程序)访问它。每当用户注销时,清除所有sharedPref,这样就不会在设备的本地存储中保存任何app令牌副本。这应该是安全的,并且将确保安全。
<强>更新强> 应用程序令牌不应存储在SharedPreference中,因为如果设备已植根,则可以公开sharedPrefs文件。 AccountManager可用于存储令牌,但如果设备已植根,也可以再次公开令牌。最好的方法是使用强加密算法加密令牌,然后将其保存到AccountManager中。用于加密的密钥对于每个用户和设备组合应该是唯一的,这样即使密钥被泄露,黑客也只能检索该特定用户的数据,而不是全部。