当我使用 Fortify 进行扫描时,我在下面的代码中遇到了诸如“经常被误用:身份验证”之类的漏洞。这个问题有解决办法吗?
我看过相关帖子,但没能找到解决方案。使用 ESAPI,我提供了主机名和 ipadress 的正则表达式,但它不起作用。
addr.getHostAddress()
java.net.InetAddress.getByName(nameServiceHost);
java.net.InetAddress.getLocalHost().getCanonicalHostName()
localhost.getHostName()
所有其他答案都尝试通过不使用内置 API,而是使用命令行或其他方式来提供解决方法。然而,他们忽略了实际的问题,这里的问题不是 API,而是 DNS 可用于身份验证的假设。
攻击者可以spoof https://en.wikipedia.org/wiki/DNS_spoofing,即伪造,DNS 响应伪装成有效的调用者。他们还可以使用IP地址欺骗 https://en.wikipedia.org/wiki/IP_address_spoofing在不攻击 DNS 的情况下显得是有效的调用者。
TL;DR 不使用 DNS 或呼叫者 IP 作为身份验证源。相反,使用 SSL/TLS 进行加密连接,然后您可以使用基本身份验证 https://www.rfc-editor.org/rfc/rfc7617, Oauth2 https://www.rfc-editor.org/rfc/rfc6750甚至更好客户端证书又名 mTLS https://en.wikipedia.org/wiki/Mutual_authentication反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)