有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用GWT的java脱机身份验证

我看到了this在线文档,从中可以看到关于GWT脱机身份验证的幻灯片:

联机时,身份验证由服务器完成

  • 然后,我们应该能够在没有服务器的情况下重新验证他/她。 小心!本地存储完全不安全
  • 因此,我们将用户的密码存储在浏览器中,用盐腌制并保存 用SHA-3加密

    找到Java SHA-3实现,在项目中复制粘贴:
    字符串shaEncoded=SHA3。摘要(字符串清除字符串)
    使用GWT 18的离线HTML5应用程序

问题是:

  1. 使用这种方法真的可以安全地验证GWT应用程序吗?如果它是SHA-3编码的,它真的会安全吗
  2. 当用户在浏览器中获得授权,然后用户使用离线应用程序,比如save stuff,那么它肯定只是存储在HTML5存储中,但是用户信息可能嵌入到任何保存的内容中。因此,当应用程序重新联机时,它将同步到服务器。这怎么安全?服务器会接受它正在同步的东西确实来自正确的用户吗

共 (2) 个答案

  1. # 1 楼答案

    对于离线身份验证,没有特殊情况。它的工作原理与在线相同

    您通常会有一个Cookie,其中包含存储在客户端浏览器中的会话信息,用于向服务器验证客户端(当您发出请求时)。 只要会话信息在后端保持不变,就可以重新验证用户

    您不能将密码存储在客户端。它足以在客户机上存储一些会话信息(在Cookie或本地存储中),并使用这些信息对用户进行身份验证

  2. # 2 楼答案

    实际上,您并不是在浏览器中存储密码本身,而是它的SHA-3散列。 从密码学的角度来看,这种方法非常安全,因为不容易检索原始密码

    只需注意: 您的代码将存储在客户端,客户端上的所有源代码都可能被篡改。因此,恶意用户也可能能够读取并利用它。 但是不要担心,对于离线可用应用程序的普通用例来说,这已经足够安全了

    对于长时间运行的服务器会话,我会做什么: 在服务器端生成随机ID,将其与用户关联,并将其存储在数据库中。 将该ID设置为客户端上的cookie,并在用户未登录且cookie中仍有该ID时对其重新进行身份验证。 要限制时间量,可以在服务器端添加超时值,然后丢弃ID