我有一个java应用程序(不在任何应用程序容器中运行),它监听ServerSocket上的连接.我希望它只接受来自localhost的连接.目前,在接受连接后,它会检查对等IP并拒绝它,如果它不是环回地址,但我知道对等IP地址可能是欺骗性的.所以,如果可能的话,我宁愿绑定到只监听环回接口的套接字; 这可能吗?
我尝试了一些不同的东西(例如在调用bind()时指定"127.0.0.1"作为本地地址)没有运气.提前致谢.
感谢大家的帮助.我很尴尬地承认这完全是我的错.我们的应用程序侦听两个不同的端口,我将一个绑定到loopback接口,但是测试另一个.当我实际尝试telnet到正确的端口时,一切正常(即,绑定到"127.0.0.1"完全符合它的预期).
至于欺骗环回地址,你们是对的.我不应该把它听起来像是主要关注点.实际上,期望的行为是仅采用本地连接,并且仅绑定到本地接口是比接受所有连接然后关闭非本地连接更直接的实现方式.
对等IP地址不能以这种方式欺骗,您不必担心使用检查对等体的技术并决定在建立期间断开连接.
但是:绑定到127.0.0.1应该工作,并导致操作系统告诉连接主机,如果它们在其中一个系统上连接其他IP地址,则没有任何监听.你能用一个可编辑的例子修改这个问题吗?也许你犯了一个简单的错误.