Бир ашыкча жаңы сап CONNECT кийин TLSти бузушу мүмкүн
Кол менен жазылган прокси коннектору туннель ачып, дароо TLS декоддоо катасын бергенде HTTP аталыштарынын алкагын текшериңиз.
CONNECT 200 кайтарса жана TLS дароо декоддой албаса, сертификаттарды же шифрлерди алмаштырганга чейин коннектордогу чек ара байттарын текшериңиз.
Генерацияланган авторизация мааниси мурунтан эле жаңы сап менен бүтүшү мүмкүн. Дагы бир саптын аягын кошуу HTTP аталыштарын эрте бүтүрүп, көздөлгөн Host талаасын же башка ачык текстти сурамдын артында калтырышы мүмкүн.
Минималдуу HTTP/1.1 CONNECT сурамы саптардын ортосунда CRLF жана аягында бош сапты колдонот:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"Ар кандай авторизация талаасын ошол акыркы бош саптын алдына коюңуз, ичине сап үзүлүшүн кошпой. Pythonдо "\n" жаңы сапты билдирет; курамында backslash жана n тамгасы бар чийки сап билдирбейт. Аларды алып салууга аракет кылганга чейин коддоо жардамчысы кандай байттарды чыгарарын текшериңиз—эски жардамчылар сап үзүлүштөрүн кошуусу мүмкүн эле.
CONNECT ийгиликтүү болгондон кийин, калган байттар туннель протоколуна таандык. Адашкан ачык текст TLS күткөн өнөктөшкө жетиши мүмкүн. Ийгиликтүү статус туура эмес сурамдан кийин кезекке турган байттарды оңдой албайт.
Кабыл алуу чек арасын да текшериңиз. Сокетти TLSке өткөрүүдөн мурун прокси жообун толук окуңуз, жарым-жартылай окууларды иштетиңиз жана аталыштардан тышкаркы окулгандардын баарын сактаңыз. Бир сокет окуусу бир бүтүн билдирүүнү камтышы шарт эмес.
Эгер бул парсер сиздики болсо, редакцияланган байт көрүнүшүн зым грамматикасы менен салыштырыңыз; сырсөздү жашырып, узундуктарды жана сап чектерин көрүнүктүү кармаңыз. Прокси байланышы гана керек болгон колдонмо үчүн, колдоого алынган коннектор бул алкак кодун ээлөө зарылдыгын жоюлат.