2010-05-13 189 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); 
       }; 
      }