我正在尝试找出在使用Titanium构建的Android移动应用中安全保存用户信息的最佳方法。我对最好的方法感到困惑。
似乎最简单的方法是将其保存为财产。有点像...
Ti.App.Properties.setString('user_name', user.name);
Ti.App.Properties.setString('user_id', user.id);
Ti.App.Properties.setString('user_sessionid', user.session_id);
这看起来很棒,因为这些属性是持久的等等。但是,根据我在其他地方读到的内容,我不确定这是否是安全/最佳方式。
另一种方法是将其保存为全局属性。
Alloy.Globals.userid = user.id;
Alloy.Globals.user_name = user.name;
这当然不是持久性的,因此用户必须每次登录。我很想知道其他人在做什么,以及最佳做法是什么。任何见解将不胜感激。谢谢!
答案 0 :(得分:1)
我建议你看看sculejs(https://github.com/dan-eyles/sculejs) - 它是javascript的noSQL数据库,其中一个核心功能是加密保存的数据并保证其安全。
它不仅仅是您希望存储的小设置,而且绝对可以满足您的需求。
您还可以对要在应用设置中存储的字符串使用某种哈希,并以您在问题中提到的方式加密/解密您存储的数据。
答案 1 :(得分:0)
毫无疑问,这个模块:https://github.com/benbahrenburg/Securely
是安全存储“小”数据的最佳方式,适用于iOS和机器人。
//Require the securely module into your project
var securely = require('bencoding.securely');
// AES encryption
var plainTextString = "this is a clear text example string";
var usingGUID = securely.generateDerivedKey(Ti.Platform.createUUID());
Ti.API.info("Derived key using GUID = " + usingGUID);
var aesEncryptedString = stringCrypto.AESEncrypt(usingGUID,plainTextString);
Ti.API.info("aesEncryptedString =" + aesEncryptedString);
// later on - decrypt it
var aesDecryptedString = stringCrypto.AESDecrypt(usingGUID,aesEncryptedString);
Ti.API.info('aesDecryptedString=' + aesDecryptedString);
模块中还有DES(sha256,sha512)加密方法供您选择。