通过限制对内网地址的访问来达到防御×××F的效果。
内网,即Private Network是有标准定义的,有下面这些:
IP协议私有网段
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
私有网段,运营商级NAT内网保留地址段,例如各种proxy:
100.64.0.0/10
Local Link网段,获取DHCP失败时,系统会分配这个网段的IP给host,方便跟同一局域网的机器交流
169.254.0.0/16
回环网段
127.0.0.0/8
不过限制IP是不能完全防住的,由于存在DNS绕过的漏洞(参考下面的文章《DNS绕过策略》)。这种漏洞原理上是利用了两次DNS之间的间隙去切换DNS指向,如果没有这个间隙的话,IP拦截是足够的。所以逻辑上建议做成这个样子:
1、用DNS获取url中host的IP
2、检查IP是否为内网网段
3、直接跟IP建立链接,获取socket
4、直接往socket做HTTP请求
这样就可以保证在第二步拦下所有内网IP。
转载于:https://blog.51cto.com/duallay/2089934