Pabeidziet CONNECT galveņu parsēšanu pirms klienta straumes pārsūtīšanas
Starpniekserveris, kas pārsūta tikai pēc pieprasījuma rindas, var nosūtīt savu Host galveni uz mērķa TLS portu.
Pēc CONNECT pieprasījuma rindas šie baiti joprojām pieder starpniekam:
CONNECT service.example:443 HTTP/1.1\r\n
Host: service.example:443\r\n
User-Agent: example-client\r\n
\r\nPārsūtot Host vai User-Agent uz 443 portu, mērķis saņem vienkārša teksta galvenes tur, kur tas gaida TLS. Šī kļūda var rasties vēl pirms šifra izvēlei ir nozīme.
- Lasiet un parsējiet līdz galveņu beigām ar tukšu rindu, iestatīšanas termiņa un galveņu izmēra ierobežojuma ietvaros.
- Piemērojiet starpnieka autentifikāciju un mērķa politiku.
- Izveidojiet apstiprināto savienojumu ar mērķi.
- Nosūtiet veiksmīgo CONNECT atbildi un pārejiet tuneļa režīmā.
Saglabājiet buferētos baitus pēc robežas atbilstošajam nākamajam stāvoklim. Neizmetiet tos un neuzskatiet starpnieka pieprasījuma galvenes par vēlāku vietnes pieprasījumu.
Klientam ir atbilstošs pienākums atbildes pusē: pabeidziet veiksmīgās CONNECT atbildes lasīšanu pirms tuneļa protokola sākšanas. Abām pusēm jāvienojas par robežu, kur straume maina lomu.