Delphi XE2 - 如何获取指定网站的IP地址?

5
我有一个程序,它检查位于 Web 服务器上的 PHP 文件以查看用户是否已验证。该 PHP 文件通过数据库运行检查并回显“已验证”(verified)。

现在,人们可以轻松地通过安装 Xampp,将我的服务器路由到 127.0.0.1 并设置一个回显“已验证”的脚本来绕过验证系统。

我想能够检查我的域名 IP 地址,以检查它是否正在路由到 127.0.0.1。

如何通过 Delphi 解析域名的 IP 地址呢?


4
你显然没有正确阅读问题。 - Josh Line
@WarrenP 一个数字IP地址可以在hosts文件中被重定向。 - Sir Rufo
1个回答

14

以前我也使用类似的方法绕过ICQ服务器端验证。当我想测试未被邀请参与的alpha/beta版本时,这种方式非常方便 :-)

Indy是Delphi附带的一个组件,其中包括TIdStack.ResolveHost()函数和独立的TIdDNSResolver组件,可以用于获取域名的IP地址。它还有一个TIdStack.LocalAddresses属性来检索本地IPv4地址。或者您可以直接使用套接字API的gethostbyname()getaddrinfo()函数,以及特定于平台的API来枚举本地IP地址,例如Windows上的GetAdaptersAddresses()函数。

然而,与其让PHP脚本简单地回显纯文本到您的应用程序,更安全的选择是让应用程序创建动态生成的随机值并将其发送到PHP脚本,然后让脚本处理、散列或其他需要使用只有您知道的算法进行处理,然后将其发送回应用程序。应用程序可以执行相同的算法并比较结果。除非有人费力反向工程您的应用程序,否则他们将无法复制您的算法或使用自己的Xampp脚本伪造其结果。

更好的方法是使用SSL/TLS加密与您的域服务器的连接,并给您的域服务器一个SSL证书,您的应用程序在与PHP脚本交换任何数据之前可以验证它。如果只做到这一点,您可以继续使用纯文本回显,因为SSL/TLS将为您验证您是否连接到了您的域。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接