我有一个程序,可以检查 Web 服务器上的 php 文件以查看用户是否经过验证。 php 文件通过数据库运行并检查并回显“已验证”(如果已验证)。
现在,人们可以通过安装 Xampp、在主机文件中将我的服务器路由到 127.0.0.1,然后设置一个回显已验证的脚本来轻松绕过验证系统。
我希望能够检查我的域的 IP 地址,以检查它是否路由到 127.0.0.1。
我如何通过delphi解析域的IP地址?
最佳答案
我曾经使用类似的 hack 来绕过 ICQ 服务器端验证。当我想测试我没有被邀请的 alpha/beta 版本时非常方便:-)
Delphi 附带的 Indy 有一个 TIdStack.ResolveHost()
函数和一个单独的 TIdDNSResolver
组件,它们都可以用来获取域的 IP( s)。它还具有 TIdStack.LocalAddresses 属性来检索本地 IPv4 地址。或者,您可以直接使用套接字 API gethostbyname()
或 getaddrinfo()
函数,以及特定于平台的 API 来枚举本地 IP,例如 GetAdaptersAddresses Windows 上的 ()
函数。
但是,与让 PHP 脚本简单地将纯文本回显到您的应用程序不同,一个不需要您验证 IP 的更安全的选项是让您的应用程序创建一个动态生成的随机数值并将其发送到PHP 脚本,然后让脚本处理它,散列它,根据需要使用只有您知道的算法,然后将其发送回应用程序。该应用程序可以执行相同的算法并比较结果。除非有人花时间对您的应用程序进行逆向工程,否则他们将无法重现您的算法或使用自定义 Xampp 脚本伪造其结果。
更好的是,使用 SSL/TLS 加密与域服务器的连接,并为域服务器提供 SSL 证书,您的应用程序可以在与 PHP 脚本交换任何数据之前验证该证书。如果您只做了这么多,您可以继续使用纯文本回显,因为 SSL/TLS 将验证您是否已连接到您的域。
关于Delphi XE2 - 如何获取指定网站的IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13371493/