【发布时间】:2017-05-05 13:51:29
【问题描述】:
我有一个程序,它接受来自客户端的 URL 并使用 net/http 包获取它们。在进行进一步处理之前,我想检查 URL 是否映射到私有(不可路由/RFC1918 网络)地址空间。
直接的方法是执行显式 DNS 请求并检查已知私有范围的地址。之后,对 URL 执行 HTTP GET 请求。
有没有更好的方法来做到这一点?最好与 http.Client 集成,以便它可以作为 GET 请求的一部分执行。
【问题讨论】:
-
什么是“私有网络空间”? RFC1918 网络?
-
我遇到了这个问题并发现:没有更好的选择。见github.com/mhausenblas/clump/blob/master/main.go#L83
-
对不起,是的,RFC1918 网络。我更新了问题以说明这一点。
-
你到底想做什么?如果主机在专用网络中,您只是想记录,还是在发出请求之前需要做其他事情? @MichaelHausenblas:仅供参考
net.IPNet有一个Containsmethod -
对于一个用例,我想中止对 RFC1918 网络的 GET 请求。对于另一种情况,我只记录 IP 地址以及它是私有的还是公共的。
标签: go network-programming ip