2012-10-12 148 views
7

我需要访问一个api,该API需要使用jquery mobile api以每个用户为基础进行http认证。在jquery移动应用程序中本地安全地存储用户密码

我打算将该应用程序作为网站使用,并将其包装在科尔多瓦的各种设备中。

如果我有一个登录表单,它捕获用户名和密码并将其存储为一个javascript变量,有没有什么方法可以暴露这些数据?

如果是这样,处理存储用户认证细节的最佳选择是什么?如果我不需要,我无意建立中间服务器。

很多谢谢。 :D

+0

它使用HTTP基本身份验证,还是作为参数传递给每个API调用的用户名/密码? – SilverlightFox

+0

实际上,两者。每次调用服务器时的http basic auth - 不返回auth令牌。 – significance

+0

用户使用基本身份验证进行身份验证后,浏览器不会自动将此数据发送到每个请求的资源吗?我知道这是如何适用于其他浏览器请求,但我不太确定JavaScript。 – SilverlightFox

回答

3

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

除了iOS版钥匙扣或者如果你编码它为增加安全性,你可以在非iPhone设备:

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

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

将IP地址存储在服务器数据库中,然后检查它是否匹配(服务器端)可能是最安全的,因为如果有人获得了localStorage数据,则无关紧要。

2

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

如果你不控制后端,你会坚持存储用户名/密码。我想说,在localStorage中设置它们是安全的,但它确实不是很安全。再次,如果您的登录不会发生在HTTPS上,我会更担心密码泄露的问题,而不是来自设备本身)。你可以使密码更难找到,不要调用变量“用户名/密码”,在JavaScript中加密它们,混淆你的代码。但最终,通过正确访问设备,无需太多努力就可以检索到它们。

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

相关问题