Bitta ortiqcha yangi qator CONNECTdan keyin TLSni buzishi mumkin
Qo'lda yozilgan proksi ulagichi tunnel ochib, darhol TLS dekodlash xatosini berganida HTTP sarlavhalari ramkasini tekshiring.
CONNECT 200 qaytarsa va TLS darhol dekodlay olmasa, sertifikatlar yoki shifrlarni almashtirishdan oldin ulagichdagi chegara baytlarini tekshiring.
Yaratilgan avtorizatsiya qiymati allaqachon yangi qator bilan tugagan bo'lishi mumkin. Yana bir qator oxirini qo'shish HTTP sarlavhalarini erta tugatib, mo'ljallangan Host maydoni yoki boshqa ochiq matnni so'rov ortida qoldirishi mumkin.
Minimal HTTP/1.1 CONNECT so'rovi qatorlar orasida CRLF va oxirida bo'sh qatordan foydalanadi:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"Har qanday avtorizatsiya maydonini o'sha oxirgi bo'sh qatordan oldin joylashtiring, ichida qator uzilishisiz. Pythonda "\n" yangi qatorni bildiradi; tarkibida backslash va n harfi bo'lgan xom satr bildirmaydi. Olib tashlashga urinishdan oldin kodlash yordamchisi qanday baytlar yaratishini tekshiring—eski yordamchilar qator uzilishlarini qo'shishi mumkin edi.
CONNECT muvaffaqiyatli bo'lgach, qolgan baytlar tunnel protokoliga tegishli. Adashgan ochiq matn TLS kutayotgan sherikka yetib borishi mumkin. Muvaffaqiyat holati noto'g'ri tuzilgan so'rovdan keyin allaqachon navbatda turgan baytlarni tuzata olmaydi.
Qabul chegarasini ham tekshiring. Soketni TLSga topshirishdan oldin proksining to'liq javobini o'qing, qismli o'qishlarni boshqaring va sarlavhalardan narida o'qilgan hamma narsani saqlang. Bitta soket o'qishi bitta to'liq xabarni o'z ichiga olishi shart emas.
Agar bu tahlilchi sizniki bo'lsa, tahrirlangan bayt tasvirini sim grammatikasi bilan solishtiring; parolni yashirib, uzunliklar va qator chegaralarini ko'rinadigan qilib turing. Faqat proksi ulanishi kerak bo'lgan dastur uchun xizmat ko'rsatiladigan ulagich ushbu ramka kodiga ega bo'lish zaruratini yo'q qiladi.