java 应用程序中主机的前向和后向 DNS 条目如何匹配,使其免受 DNS 欺骗

Sid*_*sal 5 dns fortify java-security

我正在使用 fortify,它显示了攻击者可以在我尝试在 java 应用程序中获取主机名时进行 DNS 欺骗的漏洞。我有一个解决方案,通过匹配正向 DNS 和反向 DNS 条目可以避免这种情况。但它有什么用处以及如何实现它,我无法找到它。Fortify 在这一行显示出漏洞

线路链接

Fortify 显示的建议如下:

建议:

如果您进行检查以确保主机的前向和后向 DNS 条目匹配,则可以增加域名查找的信心。如果不控制目标域的名称服务器,攻击者将无法欺骗正向和反向 DNS 条目。然而,这并不是一个万无一失的方法:攻击者可能能够说服域名注册商将域名移交给恶意域名服务器。基于 DNS 条目进行身份验证是一个冒险的提议。

感谢任何帮助,也欢迎其他解决方案。

提前致谢。

kol*_*bok 4

我认为是这样的:

    final String hostname = "google.com";
    final String ipAddress = "123.123.123.123";
    final InetAddress byIpAddress = InetAddress.getByName(ipAddress);
    boolean forwardCheck = byIpAddress.getHostName().equals(hostname);
    final InetAddress byHostName = InetAddress.getByName(hostname);
    boolean reverseCheck = byHostName.getHostAddress().equals(ipAddress);
    if (reverseCheck && forwardCheck) {
        // perform your logic
    }
Run Code Online (Sandbox Code Playgroud)