如何在C语言中检查IP地址是否对应于本地主机

4
在Linux上的C语言中,有没有一种标准的方法来检查IP地址是否对应于本地主机?也就是说,我正在寻找一个名为is_localhost的函数,如果我的计算机具有外部IP地址"1.2.3.4",则调用"localhost"、"127.0.0.1"或"1.2.3.4"中的任何一个上的is_localhost应该返回true,而任何其他IP地址都将返回false。另外,检查主机是否为本地主机的方式是否容易被欺骗?这样做是否保证请求实际来自此计算机?为了背景资料,我正在为服务器编写管理界面。我希望将只读管理部分(如查看连接列表)提供给网络,但对于像手动终止连接这样的危险操作,您应该通过在服务器上运行脚本来完成。谢谢!

1
你自己电脑的IP地址(例如,在你的例子中为1.2.3.4)与本地主机不是同一个东西——该接口始终具有127.0.0.0/8范围内的IPv4地址。你实际上是指本地主机,还是只是指“这台电脑”? - user149341
我非常怀疑在C语言中是否有一种规范的方法来检查这个,主要是因为您的计算机对其外部IP地址没有任何控制或影响力。我不确定ifconfig如何实现它,所以也许值得去验证一下。 - badcook
@duskwuff 我只是指这台电脑。 - Dan
1个回答

1
我认为您可能正在错误的方式解决问题 - 如果您想通过检查是否为本地主机来限制对远程访问应用程序的访问,则检查IP地址将是一种非常糟糕的方法。PC可以拥有任意数量的易于配置的网络接口,具有您自己选择的IP地址。因此,很容易绕过这种方式。
您可能需要考虑添加一些基本身份验证或仅不允许在远程运行某些功能。有许多方法可以实现此目的,但我认为问题的范围在于 - 不要依赖于检查IP地址。 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接