使用 GWT 进行离线身份验证
Offline Authentication with GWT
我看到 this 联机文档,那里有关于 GWT 离线身份验证的幻灯片:
在线时,认证由服务器完成。
- 然后我们应该能够在没有服务器的情况下重新验证 him/her。
当心 !本地存储完全不安全!
我们就这样将用户的密码存储在浏览器中,经过salted和
使用 SHA-3 加密。
找到一个 Java SHA-3 实现,复制粘贴到项目中:
字符串 shaEncoded = SHA3.digest( 字符串 clearString );
使用 GWT 18
的离线 HTML5 个应用
问题是:
- 是否真的可以使用这种方法安全地验证 GWT 应用程序?如果它是 SHA-3 编码的,它真的会使其安全吗?
- 当用户在浏览器中获得身份验证时,然后用户使用离线应用程序,说保存东西,然后肯定它只是存储在 HTML5 存储中,但是用户信息可能嵌入在任何保存的内容中。因此,当应用重新上线时,它将同步到服务器。这是如何安全的?服务器会接受它正在同步的东西确实来自正确的用户吗?
关于身份验证,离线没有特殊情况。它的工作原理与在线相同。
您通常会在客户端的浏览器中存储一个带有会话信息的 Cookie,用于向服务器验证客户端(当您发出请求时)。
只要会话信息在后端持久存在,您就可以重新验证用户。
您不能在客户端存储密码。它足以在客户端上存储一些会话信息(在 Cookie 或 LocalStorage 中)并使用它来验证用户。
实际上,您在浏览器中存储的不是密码本身,而是它的 SHA-3 哈希值。
从密码学的角度来看,这种方法非常安全,因为它不容易找回原始密码。
只需注意:
您的代码将存储在客户端,客户端上的每个源代码都可以被篡改。因此,恶意用户也可能能够阅读和利用它。
但别担心,对于离线可用应用程序的普通用例,这已经足够安全了。
长时间 运行 服务器会话我会做什么:
在服务器端生成一个随机 ID,将其与用户相关联并将其存储在数据库中。
将 ID 设置为客户端上的 cookie,并在用户未登录且 cookie 中仍有此 ID 时重新验证用户。
要限制时间量,您可以在服务器端添加超时值,超过该 ID 将被丢弃。
我看到 this 联机文档,那里有关于 GWT 离线身份验证的幻灯片:
在线时,认证由服务器完成。
- 然后我们应该能够在没有服务器的情况下重新验证 him/her。 当心 !本地存储完全不安全!
我们就这样将用户的密码存储在浏览器中,经过salted和 使用 SHA-3 加密。
找到一个 Java SHA-3 实现,复制粘贴到项目中:
字符串 shaEncoded = SHA3.digest( 字符串 clearString );
使用 GWT 18 的离线 HTML5 个应用
问题是:
- 是否真的可以使用这种方法安全地验证 GWT 应用程序?如果它是 SHA-3 编码的,它真的会使其安全吗?
- 当用户在浏览器中获得身份验证时,然后用户使用离线应用程序,说保存东西,然后肯定它只是存储在 HTML5 存储中,但是用户信息可能嵌入在任何保存的内容中。因此,当应用重新上线时,它将同步到服务器。这是如何安全的?服务器会接受它正在同步的东西确实来自正确的用户吗?
关于身份验证,离线没有特殊情况。它的工作原理与在线相同。
您通常会在客户端的浏览器中存储一个带有会话信息的 Cookie,用于向服务器验证客户端(当您发出请求时)。 只要会话信息在后端持久存在,您就可以重新验证用户。
您不能在客户端存储密码。它足以在客户端上存储一些会话信息(在 Cookie 或 LocalStorage 中)并使用它来验证用户。
实际上,您在浏览器中存储的不是密码本身,而是它的 SHA-3 哈希值。 从密码学的角度来看,这种方法非常安全,因为它不容易找回原始密码。
只需注意: 您的代码将存储在客户端,客户端上的每个源代码都可以被篡改。因此,恶意用户也可能能够阅读和利用它。 但别担心,对于离线可用应用程序的普通用例,这已经足够安全了。
长时间 运行 服务器会话我会做什么: 在服务器端生成一个随机 ID,将其与用户相关联并将其存储在数据库中。 将 ID 设置为客户端上的 cookie,并在用户未登录且 cookie 中仍有此 ID 时重新验证用户。 要限制时间量,您可以在服务器端添加超时值,超过该 ID 将被丢弃。