阻止主机重定向的最佳方法是什么?
例如,假设我有一些像这样的伪代码:
string result = downloadStr("http://mywebsite.com/login.php?pass=whatever&username=whatever");
if(result == "true")
return success_login;
else
return failed_login;
我可以轻松地编辑我的'hosts'文件,将'mywebsite.com'重定向到我的localhost,并始终让它返回'true'。以前没有问过这个问题,因为它不是安全问题吗?
我能想到的最佳方式就是做这样的事情:
string ip = get_website_ip("http://mywebsite.com/");
if(ip != "216.250.121.107")
{
//Host redirection detected.
}
else
{
//It's all good.
}
答案 0 :(得分:1)
一般来说,您的整个许可技术(可能)是有缺陷的。你是对的,有人可以轻松修改hosts文件并使其返回true。即使您将其更改为直接IP地址,他们也可以修改其防火墙(以及其他内容)以返回此请求的真实值。
更好的方法是不要在未加密的HTTP请求上执行此操作。对IP地址使用加密请求,并确保客户端可以可靠地验证您的许可服务器是否是它所声称的。
一个简单的解决方案是在HTTP服务器上设置SSL sertificate。然后通过HTTPS发出此请求,并在HTTPS请求中验证服务器。这样,如果他们篡改主机文件,您甚至不必担心,因为它仍然无法验证SSL请求。