Bir əlavə sətirsonu CONNECT-dən sonra TLS-i poza bilər
Əl ilə yazılmış proksi konnektoru tunel açıb dərhal TLS dekodlaşdırma xətası verdikdə HTTP başlıq çərçivəsini yoxlayın.
CONNECT 200 qaytardıqda və TLS dərhal dekodlaşa bilmədikdə, sertifikatları və ya şifrələri dəyişməzdən əvvəl konnektordakı sərhəd baytlarını yoxlayın.
Yaradılmış avtorizasiya dəyəri artıq sətirsonu ilə bitə bilər. Başqa bir sətirsonu əlavə etmək HTTP başlıqlarını erkən bitirə və nəzərdə tutulan Host sahəsini və ya digər açıq mətni sorğunun arxasında qoya bilər.
Minimal HTTP/1.1 CONNECT sorğusu sətirlər arasında CRLF və sonunda boş sətir istifadə edir:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"İstənilən avtorizasiya sahəsini həmin son boş sətirdən əvvəl yerləşdirin, içərisində sətir qırılması olmasın. Python-da "\n" sətirsonunu ifadə edir; tərkibində backslash və n hərfi olan xam sətir isə ifadə etmir. Silməyə çalışmazdan əvvəl kodlaşdırma köməkçisinin hansı baytları yaratdığını yoxlayın—köhnə köməkçilər sətir qırılmaları əlavə edə bilərdi.
CONNECT uğurlu olduqdan sonra qalan baytlar tunel protokoluna aiddir. Səpələnmiş açıq mətn TLS gözləyən qarşı tərəfə çata bilər. Uğurlu status artıq pozulmuş sorğudan sonra növbəyə düşmüş baytları düzəldə bilməz.
Qəbul sərhədini də yoxlayın. Soketi TLS-ə təhvil verməzdən əvvəl tam proksi cavabını oxuyun, qismən oxunuşları idarə edin və başlıqlardan kənarda oxunan hər şeyi qoruyun. Bir soket oxunuşu mütləq bir tam mesajı ehtiva etməməlidir.
Bu parser sizə aiddirsə, redaktə edilmiş bayt təsvirini naqil qrammatikası ilə müqayisə edin; parolu gizlədərkən uzunluqları və sətir sərhədlərini görünən saxlayın. Yalnız proksi bağlantısına ehtiyacı olan tətbiq üçün saxlanılan konnektor bu çərçivə koduna sahib olmaq ehtiyacını aradan qaldırır.