Ich arbeite an einer Änderung in einer Java EE-Anwendung, die sich basierend auf der IP-Adresse des Benutzers mithilfe von ServletRequest.getRemoteAddr authentifizieren würde . Wir speichern IP-Adressbereiche (FROM_IP und TO_IP) in einer Datenbank und das System authentifiziert sich nur, wenn die IP-Adresse eines Benutzers in einen Bereich fällt.
Jetzt haben Tester darauf hingewiesen, dass die Ziffer 0 (Null) in FROM_IP- und TO_IP-Werten (an keiner Stelle) zulässig sein sollte. Beachten Sie, dass es sich um eine Internetanwendung handelt und wir daher nur öffentliche IP-Adressen erhalten.
Haben Tester Recht, wenn sie diese Validierung vorschlagen? Warum kann der Bereichswert nicht Null sein, wie in 167.23.0.1 - 167.23.255.255?
ip
authentication
ip-address
ipv4
Ritesh
quelle
quelle
Antworten:
Nein, sie sind völlig falsch.
Tatsächlich ist dies eine gültige IP-Adresse:
192.168.24.0
Wie ist
167.23.0.1
.Die Trennung der IP-Adresse in gepunktete Segmente ist eine rein menschliche Annehmlichkeit für die Anzeige. Es ist viel leichter zu merken
192.168.1.42
als3232235818
.Was für Computer wichtig ist, ist die Trennung (Netzmaske). Es ist nicht gültig, eine Host-Adresse zu haben, deren Host-Abschnitt vollständig auf 0 oder 1 gesetzt ist.
Also 192.168.24.0, solange die Netzmaske so ist, dass im Host-Teil einige Bits gesetzt werden. Siehe folgende Berechnungen:
In diesem Fall sind im Adressteil (rechts) 2 Bits gesetzt. Dies ist eine gültige Hostadresse im Subnetz 192.168.0.0/16.
In diesem Fall sind im Adressteil 10 Bits gesetzt und 6 Bits nicht gesetzt. Dies ist eine weitere gültige Hostadresse im selben Subnetz.
In diesem Fall sind für den Adressteil Null-Bits gesetzt. Dies ist keine gültige Hostadresse im Netzwerk 192.168.24.0/24.
quelle
ping 2130706432
oderping 017700000001
(ja, auch unter Windows). Sie werden von den Ergebnissen überrascht sein.192.168.0.257
ist falsch, ist aber192.168.257
eine korrekte Darstellung von192.168.1.1
(wie sie ist192.11010305
). Seheninet_aton(3)
.Wenn ich nicht falsch verstanden habe, liegen Ihre Tester absolut falsch. Gültige IP-Adressen können durchaus eine 0 enthalten.
quelle
Im Allgemeinen: Nein, es spielt keine Rolle, ob die Adresse eine 0 enthält oder nicht.
In dem, was Ihre Tester sagen, steckt jedoch ein Körnchen Wahrheit. In einigen Fällen funktionieren alte oder defekte Netzwerkgeräte bei Adressen mit 0 in den letzten Oktesten nicht richtig. Dies ist auf die alten Regeln für das Routing zurückzuführen. Beim Classfull-Routing können Sie die Netzmaske ab dem ersten Oktett der Adresse erkennen. Wenn das Gerät immer noch den Regeln für erstklassiges Routing folgt, wird es wahrscheinlich eine Adresse wie 200.100.1.0/16 falsch verarbeiten.
quelle
Angenommen, Sie benötigen 510 IP-Adressen in einem Bereich und Ihre Netzwerkadresse ist 192.1.1.0. Sie hätten ein / 23-Subnetz, von dem eine Ihrer Host-IPs eine .0-IP-Adresse ist. Ihre Tester sind falsch, wenn die .0-Adresse ist ist eine Hostadresse. Wenn Sie ein / 24-Netzwerk haben, ist es richtig zu sagen, dass es falsch ist.
quelle
Um eine sehr einfache Antwort zu geben: Eine oder mehrere Nullen in einer IP-Adresse sind für Host-Adressen vollkommen gültig, solange diese Adressen nicht die Netzwerk- oder Broadcast-Adresse sind.
Netzwerk- und Broadcast-Adressen sind gültige IP-Adressen und können von Hosts nicht verwendet werden.
quelle