我有一个程序可以检查 Web 服务器上的 php 文件以查看用户是否已通过验证。php 文件通过数据库运行,如果它们是,则检查并回显“已验证”。
现在,人们现在可以通过安装 Xampp 轻松绕过验证系统,在他们的 hosts 文件中将我的服务器路由到 127.0.0.1,然后设置一个回显验证的脚本。
我希望能够检查我的域的 IP 地址以检查它是否路由到 127.0.0.1。
我将如何通过delphi解析域的IP地址?
我有一个程序可以检查 Web 服务器上的 php 文件以查看用户是否已通过验证。php 文件通过数据库运行,如果它们是,则检查并回显“已验证”。
现在,人们现在可以通过安装 Xampp 轻松绕过验证系统,在他们的 hosts 文件中将我的服务器路由到 127.0.0.1,然后设置一个回显验证的脚本。
我希望能够检查我的域的 IP 地址以检查它是否路由到 127.0.0.1。
我将如何通过delphi解析域的IP地址?
我曾经使用类似的 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 将验证您是否已连接到您的域。