Html 如何在cordova-ionic应用程序中保护localstorage和websql数据

Html 如何在cordova-ionic应用程序中保护localstorage和websql数据,html,local-storage,ionic-framework,hybrid-mobile-app,web-sql,Html,Local Storage,Ionic Framework,Hybrid Mobile App,Web Sql,存储在本地存储器或WebSql数据库中的数据不受保护。 我们可以直接看到WebSql和本地存储的所有数据,因为它们存储为纯文本 有没有办法保护数据 是的,您可以使用AES或其他算法对数据进行加密/解密。也许你可以试试实现 //生成一个随机密钥和IV //注意:16字节的密钥大小将使用AES-128、24=>AES-192、32=>AES-256 var key=forge.random.getBytesSync(16); var iv=forge.random.getBytesSync(16)

存储在本地存储器或WebSql数据库中的数据不受保护。 我们可以直接看到WebSql和本地存储的所有数据,因为它们存储为纯文本


有没有办法保护数据

是的,您可以使用AES或其他算法对数据进行加密/解密。也许你可以试试实现

//生成一个随机密钥和IV
//注意:16字节的密钥大小将使用AES-128、24=>AES-192、32=>AES-256
var key=forge.random.getBytesSync(16);
var iv=forge.random.getBytesSync(16);
/*或者,生成基于密码的16字节密钥
var salt=forge.random.getBytesSync(128);
var key=forge.pkcs5.pbkdf2('password',salt,numIterations,16);
*/
//使用CBC模式加密某些字节
//(其他模式包括:CFB、OFB、CTR和GCM)
var cipher=forge.cipher.createCipher('AES-CBC',key);
密码开始({iv:iv});
update(forge.util.createBuffer(someBytes));
cipher.finish();
var encrypted=cipher.output;
//输出加密十六进制
console.log(加密的.toHex());
//使用CBC模式解密某些字节
//(其他模式包括:CFB、OFB、CTR和GCM)
var decipher=forge.cipher.createDecipher('AES-CBC',key);
破译开始({iv:iv});
解密。更新(加密);
破译。完成();
//输出解密十六进制

console.log(decipher.output.toHex())我还有一个关于伪造和加密的教程@Nic Raboy-我们需要存储一些用于加密的密钥。如果有人获得了移动应用程序的密钥和代码,那么解密数据就很容易了,因为我们的移动应用程序中有加密和解密代码。对吗?正确,这就是为什么用户每次想使用应用程序时都必须输入密钥的原因。这种方式只有在密钥正确的情况下才会解密?@Nic Raboy-接受用户的密钥好主意,但我还有一个问题。当用户当时第一次使用移动应用程序时,他会输入类似1234的pin码,因此我们基于1234密钥存储数据,以备将来使用,第二次使用应用程序时,他会输入pin码:7485,因此我们会使用7485对过去的数据进行解密,这样就不会给出错误信息正确的数据。因此,最终我还需要存储pin以检查用户是否输入了正确的pin。因此,我们再次遇到相同的问题,将密码哈希存储为SHA,并在尝试解密之前进行比较