Структура поля USERID у SOCKS4
Тлумачыць поле USERID у SOCKS4 і чаму яго інтэрпрэтацыя залежыць ад сервера, а не ад аўтэнтыфікацыі па імені/паролі SOCKS5.
SOCKS4 уключае радок USERID зменнай даўжыні, які завяршаецца нулявым байтам. Сервер інтэрпрэтуе гэты ідэнтыфікатар згодна са сваёй палітыкай; пратакол не суправаджае яго субперамовамі імя/пароля SOCKS5.
Запыт SOCKS4 CONNECT да адраса дакументацыі 203.0.113.8, порт 443, з пустым USERID:
04 01 01 bb cb 00 71 08 00
Дзявяты байт 0x00 завяршае пустое поле. Гэта не сімвал 0, значэнне ASCII якога 0x30. Калі яго прапусціць, USERID застанецца незавершаным.
Што чакае сервер
Пусты ідэнтыфікатар можа быць мэтазгодным, калі сэрвіс не патрабуе ніякага. Калі ён патрабуе пэўны ідэнтыфікатар або іншы механізм доступу, прытрымлівайцеся яго дакументаванай палітыкі. Пададзенае імя ўстанаўлівае асобу толькі тады, калі сервер яго правярае.
SOCKS4a пашырае апрацоўку імя хоста прызначэння; ён не дадае аўтэнтыфікацыю SOCKS5. Сэрвіс, які патрабуе ўліковы запіс SOCKS5, мае патрэбу ў сумяшчальным кліенце і метадзе. Змяшчэнне пароля ў USERID SOCKS4 не можа замяніць гэты абмен і можа раскрыць непатрэбныя ўліковыя даныя.
Пры адмове асобна праверце версію SOCKS, запытаны адрас прызначэння і палітыку карыстальніка.