我正在尝试用SecureStorage替换ionic 2 Storage插件。但是,在文档中说"用户必须有一个安全的屏幕锁定集"。所以我有点困惑。正如还说的那样,如果安全设置不足,则应用程序开发人员应通知用户其应用程序的安全要求,并在用户更改屏幕锁定设置后再次初始化。我想我不需要现有的安全存储。因此,将"存储"移至"安全存储"是一个好主意。如果不是,那么还有什么替代方案。
那么将"存储"移动到"安全存储"是个好主意吗?
不,"安全存储"(由cordova-plugin-secure-storage提供)旨在存储少量敏感数据,例如用户凭据或信用卡详细信息。它不是作为一般存储机制的直接替代品,例如SQLite数据库(例如cordova-sqlite-storage)。它不提供无限量的存储容量,例如在Android上,尝试存储超过1.5Mb会导致内存异常。例如,如果需要存储大量敏感数据,则可以加密存储在较大SQLite数据库中的数据,并使用安全存储来安全地存储解密密钥。
在文档中说"用户必须有一个安全的屏幕锁定集">
这意味着在Android上,设备必须具有安全的锁定屏幕 - 即必须输入图案或密码锁才能解锁设备(注意:滑动解锁不被认为是安全的)。如果不是这种情况,则安全存储插件构造函数将调用错误回调,并且您将无法使用安全存储在该设备上存储数据。
还有人说,如果安全设置不足,则应用程序开发人员应通知用户其应用程序的安全要求,并在用户更改屏幕锁定设置后再次初始化。
如果在初始化插件时调用错误回调,您有机会通知用户,即"您的设备没有安全的屏幕锁定。没有一个,您将无法{使用此功能}。是否要立即设置一个?
您可以使用任何您喜欢的机制向用户呈现消息,例如cordova-plugin-dialogs
中的 confirm() 函数。
如果用户同意,您可以从安全存储插件调用secureDevice()
函数,该插件调用本机活动来引导用户完成设置屏幕锁定的过程。在此期间,您的应用将置于后台,因此当它恢复时,您可以使用onResume()
处理程序来检查安全存储插件是否已初始化,如果没有,则重试初始化它:如果用户设置了屏幕锁定,插件将成功初始化。如果没有,错误回调将再次调用(回到原点)。
另请注意,安全存储插件需要 Android 4.4 或更高版本:在 Android 4.3 或更低版本上,无论锁定屏幕设置如何,该插件始终无法启动。