我有一个程序,它检查位于 Web 服务器上的 PHP 文件以查看用户是否已验证。该 PHP 文件通过数据库运行检查并回显“已验证”(verified)。
现在,人们可以轻松地通过安装 Xampp,将我的服务器路由到 127.0.0.1 并设置一个回显“已验证”的脚本来绕过验证系统。
我想能够检查我的域名 IP 地址,以检查它是否正在路由到 127.0.0.1。
如何通过 Delphi 解析域名的 IP 地址呢?
现在,人们可以轻松地通过安装 Xampp,将我的服务器路由到 127.0.0.1 并设置一个回显“已验证”的脚本来绕过验证系统。
我想能够检查我的域名 IP 地址,以检查它是否正在路由到 127.0.0.1。
如何通过 Delphi 解析域名的 IP 地址呢?
以前我也使用类似的方法绕过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将为您验证您是否连接到了您的域。