使用DNS名称作为安全性依据的漏洞优化

本文探讨了依赖DNS名称进行安全认证的漏洞,指出DNS欺骗的风险,并提供了两种修复方案:1) 添加IP校验,包括对IP的合法性验证;2) 更换获取IP的方法。强调了不应仅依赖DNS记录进行身份验证,推荐结合其他认证机制提高安全性。
摘要由CSDN通过智能技术生成

漏洞

问题描述:程序中采用DNS名称进行安全认证,但DNS名称是容易被攻击者进行欺骗的。

许多 DNS 服务器都很容易被攻击者欺骗,所以应考虑到某天软件有可能会在有问题的 DNS 服务器环境下运行。如果允许攻击者进行 DNS 更新(有时称为 DNS 缓存中毒),则他们会通过自己的机器路由您的网络流量,或者让他们的 IP 地址看上去就在您的域中。勿将系统安全寄托在 DNS 名称上。

 

例如:下面代码片段中,如果发生DNS欺骗,会绕过安全验证。

String ip = request.getRemoteAddr();

InetAddress inetAddress = InetAddress.getByName(ip);

if (inetAddress.getCanonicalHostName().endsWith("demo.com")) {

//Verification passed

}

修复建议: 不要依赖DNS名称进行安全认证。

 

IP 地址相比 DNS 名称而言更为可靠,但也还是可以被欺骗的。攻击者可以轻易修改要发送的数据包的源 IP 地址,但是响应数据包会返回到修改后的 IP 地址。为了看到响应的数据包,攻击者需要在受害者机器与修改的 IP 地址之间截取网络数据流。为实现这个目的,攻击者通常会尝试把自己的机器和受害者的机器部署在同一子网内。攻击者可能会巧妙地采取源地址路由的方法来回避这一要求,但是在今天的互联网上通常会禁

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值