Das USERID-Feld in SOCKS4
Erklärt das USERID-Wire-Feld von SOCKS4 und warum seine Auslegung vom Server abhängt und nicht von der SOCKS5-Anmeldung mit Benutzername/Passwort.
SOCKS4 enthält eine USERID-Zeichenkette variabler Länge, die durch ein Nullbyte abgeschlossen wird. Der Server interpretiert diese Kennung nach seiner Richtlinie; das Protokoll lässt darauf keine SOCKS5-Teilaushandlung für Benutzername/Passwort folgen.
Eine SOCKS4-CONNECT-Anfrage an die Dokumentationsadresse 203.0.113.8, Port 443, mit leerer USERID lautet:
04 01 01 bb cb 00 71 08 00
Das neunte Byte 0x00 beendet das leere Feld. Es ist nicht das Zeichen 0, dessen ASCII-Wert 0x30 ist. Wird es weggelassen, bleibt USERID unvollständig.
Was der Server erwartet
Eine leere Kennung kann angemessen sein, wenn der Dienst keine verlangt. Verlangt er eine bestimmte Kennung oder einen anderen Zugriffsmechanismus, befolgen Sie seine dokumentierte Richtlinie. Ein angegebener Name begründet Identität nur, wenn der Server ihn prüft.
SOCKS4a erweitert die Behandlung des Ziel-Hostnamens; es fügt keine SOCKS5-Authentifizierung hinzu. Ein Dienst, der ein SOCKS5-Konto verlangt, benötigt einen kompatiblen Client und ein passendes Verfahren. Ein Passwort in die SOCKS4-USERID zu schreiben, kann diesen Austausch nicht ersetzen und könnte ein nicht zugehöriges Anmeldeinformationspaar offenlegen.
Bei einer Ablehnung prüfen Sie SOCKS-Version, angefragtes Ziel und Benutzerrichtlinie getrennt.