Wie kann ich ein socket akzeptiert verbindungen nur vom localhost (in Java)?

Ich habe eine java app (läuft nicht in jeder Anwendung, die container), die hört auf einer ServerSocket-verbindungen. Ich möchte, dass es nur verbindungen von localhost. Derzeit, wenn eine Verbindung akzeptiert wird, prüft es die peer-IP und lehnt Sie ab, wenn Sie nicht die loopback-Adresse, aber ich weiß, dass peer-IP-Adressen können gefälscht werden. Also, wenn möglich, würde ich lieber eine Bindung an eine Steckdose, die nur lauscht auf dem loopback-interface; ist das möglich?

Habe ich versucht, ein paar andere Dinge (wie die Angabe "127.0.0.1" als die lokale Adresse beim Aufruf von bind ()), ohne Glück. Vielen Dank im Voraus.


Danke Euch allen für Eure Hilfe. Ich bin peinlich zugeben, dass das alles war mein Fehler. Unsere Anwendung hört auf zwei verschiedene ports, und ich war maßgeblich an der loopback-Schnittstelle, aber die Tests gegen die anderen. Wenn ich tatsächlich versuchen, mit telnet auf den entsprechenden port, funktioniert alles einwandfrei (d.h., die Bindung an die "127.0.0.1" genau das tut, was es soll).

Als für spoofing die loopback-Adresse, die Sie Jungs haben Recht. Ich sollte nicht gemacht haben, es Klang wie das primäre Anliegen. Wirklich, das gewünschte Verhalten nur lokale verbindungen und die Bindung an nur die lokale Schnittstelle ist ein direkter Weg, dies zu erreichen, als die Annahme alle verbindungen schließen nicht-einheimischen.

  • Wo hast du die information, dass 127.0.0.1 manipuliert werden können? Ich bin skeptisch.
InformationsquelleAutor | 2008-09-19
Schreibe einen Kommentar