【问题标题】:How to check request is from the same client [duplicate]如何检查请求来自同一个客户端[重复]
【发布时间】:2015-07-22 07:46:41
【问题描述】:

我正在使用 jsp 开发一个 Web 应用程序。我的要求是确定请求的编号是否来自同一台机器。如何对设备进行指纹识别...我试图获取 IP 地址,但 jsp 总是返回服务器 IP 地址。为此,我参考了以下问题。get IP from client 是否有任何方法可以使用 java 脚本或 jsp 获取 IP 或 Mac 地址或客户端 PC 的唯一标识符.....

【问题讨论】:

标签: java javascript


【解决方案1】:

您无法获取 MAC 地址。您可以使用的其他选项是:

  1. 设置一个唯一的 cookie 并使用它。
  2. 使用 IP 地址和浏览器信息以及 cookie 以获得额外的保证。

远程主机和地址差异你可以在这里Remote Address and Remote Host

【讨论】:

    【解决方案2】:

    当您的服务器位于 Apache 等网络服务器之后时,IP 请求将不起作用。更好的是为第一个请求分配一个 id 并将其放入 cookie 中。但是,如果您想跨多个浏览器识别同一个客户端,cookie 可能对您没有帮助。您能否对您的要求进行更详细的说明?什么是独特的客户?相同的浏览器/多个浏览器/子网是可以接受的/或其他什么?这可以帮助 - How do I uniquely identify computers visiting my web site? 吗?

    检查https://www.chromium.org/Home/chromium-security/client-identification-mechanisms,它解释了不同的客户端识别机制。 HTML appcache 听起来像是一个选项(但如果不允许使用 cookie,则不确定是否要在客户端计算机的磁盘上“存储”某些内容)。

    【讨论】:

    • 我不能使用cookie....我的应用程序将支持金融业务,所以不推荐cookie....和机器一样,但浏览器不同...
    • HTTP 标头的信息有限,而且并非万无一失。如果您的应用程序是从具有出站代理的子网中访问的,即使您有几台机器访问您的应用程序,您也将拥有相同的客户端 IP。当您的应用程序位于 NAT 之后时也是如此。迟早你必须做出权衡。
    • 你知道为什么不推荐使用cookie吗?您确实有非 javascript 可读、安全的 cookie,您也可以对其进行加密(如果您使用 https,则可能是多余的),这些 cookie 会存在很短的时间。也许你可以证明 cookie 是合理的。
    • 如何实现加密cookies
    • 如果您只使用 HTTPS,那么您不必这样做。否则,您可以使用任何强加密算法在 java 代码中加密您的 cookie,然后再将其设置在响应中,并在收到它后将其解密。如果您需要识别客户端,则需要进行 2 路加密(以便您可以解密)。如果您只需要识别 IP/客户端,那么应该采用一种加密方式。
    【解决方案3】:

    在您的 jsp 上,您可以使用 cookie。你可以有这样的东西:

    <%
    
    
       Cookie alreadyAccessed = new Cookie("already_accessed", "true");
    
       // Set expiry date after 24 Hrs
       alreadyAccessed.setMaxAge(60*60*24);
    
       // Add the cookie in the response header.
       response.addCookie( alreadyAccessed );
    %>
    

    【讨论】:

      【解决方案4】:

      您始终可以设置 cookie。检查请求中的 cookie(当它到达 Java 时)。如果它在那里并且具有您知道的价值,那么它就是现有用户。如果它不存在,则它是一个新用户,您应该为该用户设置一个并跟踪您放置的值。

      如果所有其他选项都不可行(如 cookie、IP、用户代理或所有选项的组合),那么您可能需要考虑让用户注册和登录。这样,您就可以全面了解谁在实际操作。

      【讨论】:

      • 我无法使用 cookie....我的应用程序将支持财务操作,因此不推荐使用 cookie....
      • @Ramakrishna 您可能需要预先设置所有限制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多