在jquery移动应用程序中本地安全地存储用户密码

时间:2012-10-12 19:39:15

标签: javascript security cordova jquery-mobile

我需要使用jquery mobile api访问每个用户需要http身份验证的api。

我计划将该应用程序作为网站提供,并将其打包在Cordova中用于各种设备。

如果我有一个用于捕获用户名和密码的登录表单并将其存储为javascript变量,那么这些数据是否有任何暴露方式?

如果是这样,处理存储用户身份验证详细信息的最佳替代方法是什么?如果我不需要,我很勉强建立中间服务器。

非常感谢。 :d

2 个答案:

答案 0 :(得分:3)

我建议不要在localStorage中存储用户名或密码,而是存储访问令牌。访问令牌可以经常更新和更改,也不会显示用户是谁或他们的哈希密码是什么。

除了iOS Keychain,或者如果您为非iPhone设备编码以增加安全性,您可以:

确保不将设备ID存储在localStorage中。

为了增加安全性,您还可以将用户的IP地址存储在数据库中,并检查(服务器端)IP地址是否匹配,但这可能太多,因为用户每次连接到互联网时都必须登录新位置或IP地址发生变化。

将IP地址存储在服务器数据库中,然后检查它是否匹配(服务器端)可能是最安全的,因为如果有人拿到localStorage数据就无所谓了。

答案 1 :(得分:2)

所以我理解你不控制你登录的后端?如果你这样做,我会更倾向于发送一次用户名/密码,然后存储一些允许你后续访问的访问令牌。

如果您不控制后端,那么您将无法存储用户名/密码。我会说,在localStorage中设置它们就像它获得的那样安全(不可否认,这是不安全的。再说一次,如果你的登录不是在HTTPS上发生的话,我会更担心密码泄漏而不是从设备泄漏本身)。您可以更难找到密码,而不是调用变量“username / password”,在javascript中加密它们,混淆代码。但最终,只需正确访问设备,就可以毫不费力地检索它们。

打包为原生应用后,您有更多选择,例如iOS钥匙串:http://shazronatadobe.wordpress.com/2010/11/06/ios-keychain-plugin-for-phonegap/