2012-03-14 109 views
0

防止主機重定向的最佳方法是什麼?防止主機重定向

例如,說我有一些僞代碼:

string result = downloadStr("http://mywebsite.com/login.php?pass=whatever&username=whatever"); 
if(result == "true") 
    return success_login; 
else 
    return failed_login; 

我可以很容易地只是去和編輯我的「主人」文件重定向「mywebsite.com」到我的本地主機,並且總是有它返回'真'。這個問題以前沒有問過,因爲它不是安全問題?

我能想到的會做這樣的事情的最好方法:

string ip = get_website_ip("http://mywebsite.com/"); 
if(ip != "216.250.121.107") 
{ 
    //Host redirection detected. 
} 
else 
{ 
    //It's all good. 
} 
+0

在你的重定向檢測(比如說十次)中,我仍然可以修改我的防火牆或路由器,以將流量重定向到該IP到我的服務器。 – GoldenNewby 2012-03-14 04:08:01

回答

1

一般來說你的牌全部技術(大概)是有缺陷的。你是對的,有人可以很容易地修改主機文件並使其返回true。即使您將其更改爲直接IP地址,也可以修改其防火牆(以及其他內容)以便爲此請求返回真實值。

這樣做的更好方法是不要通過未加密的HTTP請求進行。使用對IP地址的加密請求,並確保您的客戶端可以可靠地驗證您的許可服務器是它說的是誰。

一個簡單的解決方案是在您的HTTP服務器上設置SSL證書。然後通過HTTPS發出此請求,並在HTTPS請求中驗證服務器。這樣,您甚至不必擔心是否會篡改主機文件,因爲它仍不會驗證SSL請求。