ผลิตภัณฑ์พร็อกซีบางตัวกำหนดขั้นตอนการเข้าสู่ระบบที่ให้คุกกี้หรือโทเค็นสำหรับคำขอพร็อกซีถัดไป หากโทเค็นนั้นต้องปรากฏบน CONNECT ให้แยกมันออกจากคุกกี้ที่ตั้งใจไว้สำหรับเว็บไซต์ภายในอุโมงค์

libcurl มีรายการส่วนหัวแบบกำหนดเองโดยเฉพาะสำหรับพร็อกซี ในแอปพลิเคชัน C ที่เริ่มต้นแล้ว ส่วนของคอนฟิกูเรชันอาจมีลักษณะเช่นนี้:

struct curl_slist *proxy_headers = NULL;
proxy_headers = curl_slist_append(proxy_headers,
    "Cookie: ProxySession=REPLACE_WITH_PROXY_TOKEN");
curl_easy_setopt(handle, CURLOPT_PROXYHEADER, proxy_headers);
curl_easy_setopt(handle, CURLOPT_HEADEROPT,
                 (long) CURLHEADER_SEPARATE);

สิ่งนี้เหมาะสมเฉพาะเมื่อโปรโตคอลการเข้าสู่ระบบที่จัดทำเอกสารของพร็อกซีต้องการส่วนหัวนั้น ตรวจสอบผลลัพธ์ของการจัดสรรและตัวเลือกในโค้ดโดยรอบ เก็บรายการไว้จนกว่าการถ่ายโอนจะเสร็จสิ้น จากนั้นล้างหรือแทนที่ตัวชี้ของแฮนเดิลก่อนปล่อยรายการ

ด้วยการจัดการส่วนหัวแยกกัน libcurl จะส่งรายการพร็อกซีบน CONNECT และรายการปลายทางบนคำขอภายในอุโมงค์ที่สร้างขึ้น ดังนั้นพร็อกซีจึงได้รับโทเค็นของผู้จำหน่ายโดยที่โทเค็นนั้นไม่กลายเป็นคุกกี้ของเว็บไซต์ การแยกนี้เป็นค่าเริ่มต้นตั้งแต่ libcurl 7.42.1 ตัวเลือกที่ชัดเจนทำให้พฤติกรรมที่ตั้งใจมองเห็นได้

ขวดคุกกี้ของเบราว์เซอร์เป็นกลไกอีกอย่างหนึ่ง

การเปิดใช้เอ็นจินคุกกี้ของ libcurl หรือการตั้งค่าคุกกี้สำหรับปลายทางไม่ได้สร้างขั้นตอนการเข้าสู่ระบบพร็อกซีเฉพาะของเบราว์เซอร์ขึ้นมาใหม่โดยอัตโนมัติ CONNECT เกิดขึ้นก่อนการแลกเปลี่ยน HTTPS กับปลายทาง ระบุข้อกำหนดจริงของผลิตภัณฑ์แทนการคัดลอกคุกกี้ไซต์ที่ดักจับได้ไปยังทุกคำขอ

หากพร็อกซีใช้การรับรองความถูกต้องพร็อกซี HTTP มาตรฐาน ให้ใช้ข้อมูลรับรองพร็อกซีของ libcurl และตัวเลือกการรับรองความถูกต้องที่รองรับแทน 407 กับ Proxy-Authenticate เป็นโปรโตคอลที่ต่างจากหน้าเข้าสู่ระบบ HTML ที่ส่งคืนโทเค็นเซสชัน

จำกัดโทเค็นให้อยู่ภายในปลายทางพร็อกซีและอายุการใช้งานที่ตั้งใจ เมื่อเปลี่ยนไปยังตัวกลางอื่น ให้แทนที่รายการส่วนหัวเป็นส่วนหนึ่งของการเปลี่ยนแปลงคอนฟิกูเรชันนั้น รายการส่วนหัวคำขอทั่วไปเป็นสถานที่ที่ไม่ดีสำหรับความลับที่เป็นของพร็อกซีเดียวเท่านั้น

บทความที่เกี่ยวข้อง