5

我有一个程序可以检查 Web 服务器上的 php 文件以查看用户是否已通过验证。php 文件通过数据库运行,如果它们是,则检查并回显“已验证”。

现在,人们现在可以通过安装 Xampp 轻松绕过验证系统,在他们的 hosts 文件中将我的服务器路由到 127.0.0.1,然后设置一个回显验证的脚本。

我希望能够检查我的域的 IP 地址以检查它是否路由到 127.0.0.1。

我将如何通过delphi解析域的IP地址?

4

1 回答 1

14

我曾经使用类似的 hack 来绕过 ICQ 服务器端验证。当我想测试我未被邀请的 alpha/beta 版本时非常方便:-)

Delphi 附带的 Indy 有一个TIdStack.ResolveHost()函数和一个单独的TIdDNSResolver组件,它们都可以用来获取域的 IP。它还具有TIdStack.LocalAddresses检索本地 IPv4 地址的属性。或者您可以直接使用套接字 APIgethostbyname()getaddrinfo()函数,以及特定于平台的 API 来枚举本地 IP,就像GetAdaptersAddresses()Windows 上的函数一样。

但是,与其让 PHP 脚本简单地将纯文本回显到您的应用程序,不如让您的应用程序创建一个动态生成的 nonce 值并将其发送到 PHP 脚本,而不需要您验证 IP 的更安全的选择,然后让脚本根据需要使用只有您知道的算法对其进行处理、哈希处理,然后将其发送回应用程序。该应用程序可以执行相同的算法并比较结果。除非有人花时间对您的应用程序进行逆向工程,否则他们将无法使用自定义 Xampp 脚本重现您的算法或伪造其结果。

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

于 2012-11-14T01:39:52.560 回答