2012-03-14 88 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请求。