在flex中保存用户登录名和密码的最佳方法是什么?

时间:2010-07-27 13:31:19

标签: flex remember-me

在flex中保存用户凭据的最佳方法是什么?本地存储似乎不是存储机密数据的好地方,因为它将信息保存为纯文本。

6 个答案:

答案 0 :(得分:2)

你不应该。使用浏览器cookie或会话令牌来标识服务器的用户。例如:

  1. 用户在Flex中输入用户名和密码,然后点击登录。
  2. 服务器验证凭据。然后,在内存或数据库中,服务器将随机(且足够安全)令牌与用户相关联。然后服务器将令牌返回给客户端。
  3. 客户端将令牌保存在cookie,LocalSharedObject或内存中。然后,后续请求也包括令牌。

答案 1 :(得分:1)

您可以使用ExternalInterface与JavaScript通信并在浏览器Cookie中存储数据。

不要在cookie中存储用户的名字或密码 - 在服务器中创建包含凭据的会话,并将会话ID存储在浏览器cookie中。

答案 2 :(得分:1)

如果您的服务不支持凭据,那么唯一可以认为您可以在SharedObject中保存用户登录状态。

您可以将UserName + Random Token的哈希值保存到SharedObject并在UserName中保存SharedObject的副本,然后在创建应用程序creationComplete时检查哈希值与保存的用户名匹配。

这个技巧的好处是:

  1. 密码永远不会在本地持续存在。
  2. 因为需要而难以登录 将用户名与哈希值匹配。
  3. 这里有点难以解释,您可以查看here,源代码可供下载。

答案 3 :(得分:0)

用户凭据通常存储在会话变量中。

答案 4 :(得分:0)

您不一定需要将凭据保存为本地存储中的纯文本;实际上,Local Storage(SharedObject)实际上是序列化为AMF,因此它不是纯文本。无论您使用哪种媒体来存储敏感数据,都应该考虑使用某种散列或加密技术,如SHA1或RSA。

散列和加密之间的区别在于:

  • 哈希(SHA1,MD5等)是一种单向加密 - 换句话说,很难确定哈希值的原始值,所以你可以做的就是比较一个散列值到另一个,因为这些散列算法总是吐出相同的东西。
  • 加密(RSA,AES等)是双向加密 - 换句话说,您可以确定加密数据的原始值,通常是使用公钥/私钥组合

这实际上取决于你想要做什么。

希望你来吧

答案 5 :(得分:0)

SharedObject是一个非常糟糕的存储密码的地方。

请看这个:

http://livedocs.adobe.com/flex/3/html/help.html?content=security2_22.html

相关问题