【问题标题】:How to know Remote IP Address in JSP如何在 JSP 中知道远程 IP 地址
【发布时间】:2013-06-20 15:01:20
【问题描述】:

我有一个网络应用程序,通过它可以进行支付交易。

申请流程

用户将打开我的应用程序并点击支付按钮。现在我将请求重定向到支付网关提供商(ICICI、EBS、PayPal 等)。现在,支付网关提供商页面将出现在我的网站中。现在支付流程将通过,支付网关提供商会将他们的响应发布到我的应用程序(到 JSP 页面)。捕获响应后,我将处理请求。

我的要求

当他们调用我的 JSP 时,我如何知道 ICICI、PayPal 或 EBS 服务器 IP 地址。如果我打电话给request.getRemoteAddr(),它将提供客户端 IP 地址。我想知道支付网关服务器的IP地址。

提供者将数据发布为 GET 而不是 POST。在这里,我没有提到我的实际支付网关提供商。

【问题讨论】:

  • 如果提供商直接向您发送 GET,那么您将看到提供商的 IP。如果您看到客户端 IP,则 GET 来自浏览器(可能由提供商发起,例如使用 Javascript 或重定向)。提供商究竟是如何做到这一点的?为什么需要 IP 地址?
  • 为了防止网站被黑客攻击,我们计划检查IP地址。在我的情况下,当他们调用时,请求标头的“引用者”不可用。
  • 啊,所以你想做一些安全检查?通过 IP 地址执行此操作通常不是一个好主意,因为它可能会被伪造。再次,请扩展您的问题以解释为什么需要 IP 地址。
  • 为了安全检查我需要IP地址。
  • 再次,请澄清您的问题:发件人究竟是如何发送响应的? 无论如何,基于 IP 地址的身份验证并不安全。使用另一种机制,最好是提供者推荐的机制(参见 vlad b.'s answer)。

标签: java http servlets http-headers remote-server


【解决方案1】:

对于 PayPal,您可以使用 IPN
https://www.paypal.com/ipn

即时付款通知 (IPN) 是 PayPal 的消息服务, 当交易受到影响时发送通知。一旦IPN 集成,卖家可以自动化他们的后台,所以他们没有 等待付款来触发订单履行。

使用 IPN,您可以从 PayPal 服务器收到对您的 IPN 网址的 POST/GET 调用。这意味着客户在付款后不必返回您的网站,您也不必验证客户数据 - 相反,PayPal 服务器会进行 3 次握手:他们向您发送付款数据,您发回支票,并且他们验证您所拥有的数据是否正确的检查。在这种情况下,服务器 ip 是来自 http 调用的原始 ip。

其他服务可能会有类似的东西。

【讨论】:

    【解决方案2】:

    一般情况下,您只有在没有支付提供商帮助的情况下才能知道这一点

    • 您和提供商之间没有代理,并且
    • 提供商直接向您发送 HTTP POST(或类似的)

    在这种情况下,ServletRequest.getRemoteAddr() 应该给你提供者的地址。

    如果您改为获取客户端浏览器的地址,那么提供商可能不直接将 POST 发送给您,而是指示客户端浏览器发送它(很可能使用 Javascript)。在这种情况下,您无法找到提供商发送的地址。


    无论如何,您为什么需要知道支付提供商的 IP 地址?你自己重定向到提供者,所以你已经有了地址,不是吗?

    也许您可以更详细地解释一下您、客户端浏览器和支付提供商之间的数据流是什么,以及为什么您想知道提供商的 IP 地址?也许那时我们可以提供更好的帮助。

    【讨论】:

    • 提供者正在发布 GET 数据,并且对最终用户可见。黑客是专家,可以轻松破解应用程序,因为只有少数参数被加密。
    猜你喜欢
    • 2012-05-27
    • 2023-03-11
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多