ఒక అదనపు కొత్త లైన్ 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" కొత్త లైన్ను సూచిస్తుంది; బ్యాక్స్లాష్ మరియు n అక్షరం ఉన్న ముడి స్ట్రింగ్ సూచించదు. తొలగించడానికి ప్రయత్నించే ముందు ఎన్కోడింగ్ సహాయకుడు ఏ బైట్లను ఉత్పత్తి చేస్తుందో తనిఖీ చేయండి—పాత సహాయకులు లైన్ బ్రేక్లను జోడించగలిగేవి.
CONNECT విజయవంతమైన తర్వాత, మిగిలిన బైట్లు సొరంగ ప్రోటోకాల్కు చెందుతాయి. దారి తప్పిన సాదా పాఠ్యం TLS ఆశించే తోటి వద్దకు చేరుకోవచ్చు. విజయ స్థితి తప్పుగా రూపొందిన అభ్యర్థన తర్వాత ఇప్పటికే క్యూలో ఉన్న బైట్లను సరిచేయలేదు.
స్వీకరణ సరిహద్దును కూడా తనిఖీ చేయండి. సాకెట్ను TLSకు అప్పగించే ముందు పూర్తి ప్రాక్సీ ప్రతిస్పందనను చదవండి, పాక్షిక పఠనాలను నిర్వహించి, హెడర్లకు ఆవల చదివిన ప్రతిదీ భద్రపరచండి. ఒక సాకెట్ పఠనంలో ఒక పూర్తి సందేశం ఉండాల్సిన అవసరం లేదు.
ఈ పార్సర్ మీదైతే, సవరించిన బైట్ ప్రాతినిధ్యాన్ని వైర్ వ్యాకరణంతో పోల్చండి; పాస్వర్డ్ను దాచుతూ పొడవులు మరియు లైన్ సరిహద్దులను కనిపించేలా ఉంచండి. ప్రాక్సీ కనెక్షన్ మాత్రమే అవసరమైన అనువర్తనానికి, నిర్వహించబడే కనెక్టర్ ఈ ఫ్రేమింగ్ కోడ్ను కలిగి ఉండాల్సిన అవసరాన్ని నివారిస్తుంది.