2010-05-13 184 views
4

我正在开发一个将连接到信用卡处理网关Web服务的网站。出于安全目的,该web服务仅接受来自先前通知给他们的IP地址的请求。如何在HttpWebRequest中更改请求IP?

由于我在本地开发,我的IP几乎每天都在变化。有没有办法让我更改HttpWebRequest的IP地址,以便我可以在本地测试Webservice调用?

此webservice通过https地址访​​问,并且方法必须通过POST发送。

+1

大多数支付网关都提供了一个用于测试目的的开放端点。你使用哪个网关? – 2010-05-13 18:32:26

回答

1

不,但是如果您设法更改了请求的源IP地址,您将要做的就是IP欺骗。问题在于源IP用于将响应路由回您的机器,因此,由于您以某种方式设法更改请求数据包中的IP地址,因此响应永远不会回复您,因为这不是您的IP地址。

+0

在某些环境中,可能会欺骗报告给高级应用程序的IP地址,并将网络层使用的底层IP作为真实地址。这可以让你欺骗地址,并仍然得到回应。我不知道ASP.NET是否有这个漏洞,但我已经在ColdFusion和一些Java servlet主机中进行过测试。 – 2010-05-13 18:46:04

+0

@Sam,我想知道更多关于这一点的信息,特别是TCP/IP流量。你有任何引用/链接? – 2010-05-13 19:06:33

+0

这里是我在2004年写过的博客文章。我没有任何其他的参考资料,只是说我自己做过。 http://rewindlife.com/2004/04/20/remote_addr-and-remote_host-not-safe-for-use-in-security/ – 2010-05-14 00:23:35

0

如果您的数据采用JSON编码,您可能希望查看JSONP,因为这完全是为了从发送原始网页的网页服务器请求数据。

0

我知道这是一个旧帖子。但是我能够为我找到这份工作,希望这对需要类似问题的人有用

ServicePointManager.Expect100Continue = true; 
      if (System.Web.HttpContext.Current.Request.IsLocal) 
      { 
       webRequest.ServicePoint.BindIPEndPointDelegate = delegate(
       ServicePoint servicePoint, 
       IPEndPoint remoteEndPoint, 
       int retryCount) 
       { 
        return new IPEndPoint(
         IPAddress.Parse("192.168.1.1"), 
         0); 
       }; 
      }