我有一个可以使用HTML5离线缓存离线运行的网络应用。我在客户端存储用户密码的sha256哈希,这允许我让用户在离线时本地登录,但我不需要在本地存储实际密码。
我想介绍一些功能,如果应用程序在线,那么应用程序将自动登录到服务器,而无需用户重新输入密码。这意味着我需要以某种方式在客户端上存储实际密码,或者我需要将散列密码传递给服务器以允许服务器对用户进行身份验证。这两种方法似乎都有缺点:
我不相信我可以将密码安全地存储在客户端上(javascript变量会这样做,但随着页面刷新,var会超出范围.Cookie或会话存储或本地存储都可以轻松查看。
我已经在本地存储了密码的sha256哈希,但是如果我在服务器上打开一个方法来允许这个哈希来验证用户,那么我也打开了安全性。
有人对这个有什么好主意吗?感谢。
(服务器是ASP.NET MVC C#)
答案 0 :(得分:0)
您可以将散列密码存储在IndexedDB或WebSQL数据库中,因为这两者都很难阅读 - 尽管Chrome开发者工具确实允许您在知道的情况下访问它们 - 尽管这些都不受支持在Internet Explorer中。但是,如果您的应用程序脱机运行,那无关紧要;)