我正在开发一个将连接到信用卡处理网关Web服务的网站。出于安全目的,该web服务仅接受来自先前通知给他们的IP地址的请求。如何在HttpWebRequest中更改请求IP?
由于我在本地开发,我的IP几乎每天都在变化。有没有办法让我更改HttpWebRequest的IP地址,以便我可以在本地测试Webservice调用?
此webservice通过https地址访问,并且方法必须通过POST发送。
我正在开发一个将连接到信用卡处理网关Web服务的网站。出于安全目的,该web服务仅接受来自先前通知给他们的IP地址的请求。如何在HttpWebRequest中更改请求IP?
由于我在本地开发,我的IP几乎每天都在变化。有没有办法让我更改HttpWebRequest的IP地址,以便我可以在本地测试Webservice调用?
此webservice通过https地址访问,并且方法必须通过POST发送。
不,但是如果您设法更改了请求的源IP地址,您将要做的就是IP欺骗。问题在于源IP用于将响应路由回您的机器,因此,由于您以某种方式设法更改请求数据包中的IP地址,因此响应永远不会回复您,因为这不是您的IP地址。
在某些环境中,可能会欺骗报告给高级应用程序的IP地址,并将网络层使用的底层IP作为真实地址。这可以让你欺骗地址,并仍然得到回应。我不知道ASP.NET是否有这个漏洞,但我已经在ColdFusion和一些Java servlet主机中进行过测试。 – 2010-05-13 18:46:04
@Sam,我想知道更多关于这一点的信息,特别是TCP/IP流量。你有任何引用/链接? – 2010-05-13 19:06:33
这里是我在2004年写过的博客文章。我没有任何其他的参考资料,只是说我自己做过。 http://rewindlife.com/2004/04/20/remote_addr-and-remote_host-not-safe-for-use-in-security/ – 2010-05-14 00:23:35
如果您的数据采用JSON编码,您可能希望查看JSONP,因为这完全是为了从发送原始网页的网页服务器请求数据。
我知道这是一个旧帖子。但是我能够为我找到这份工作,希望这对需要类似问题的人有用
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);
};
}
大多数支付网关都提供了一个用于测试目的的开放端点。你使用哪个网关? – 2010-05-13 18:32:26