Ορισμένα προϊόντα διαμεσολαβητή ορίζουν ροή σύνδεσης που παρέχει cookie ή token για επόμενα αιτήματα μέσω του διαμεσολαβητή. Αν αυτό το token πρέπει να εμφανιστεί στο CONNECT, κρατήστε το χωριστά από τα cookies που προορίζονται για τον ιστότοπο μέσα στη σήραγγα.

Το 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 και τη λίστα προορισμού στο αίτημα μέσα στη σήραγγα που έχει δημιουργηθεί. Έτσι ο διαμεσολαβητής λαμβάνει το token του προμηθευτή χωρίς αυτό να γίνεται cookie ιστοτόπου. Ο διαχωρισμός είναι προεπιλογή από το libcurl 7.42.1· η ρητή επιλογή κάνει την επιδιωκόμενη συμπεριφορά ορατή.

Το βάζο cookies του προγράμματος περιήγησης είναι άλλος μηχανισμός

Η ενεργοποίηση της μηχανής cookies του libcurl ή ο ορισμός cookie για τον προορισμό δεν αναπαράγει αυτόματα την ιδιόκτητη ροή σύνδεσης διαμεσολαβητή του προγράμματος περιήγησης. Το CONNECT συμβαίνει πριν από την ανταλλαγή HTTPS με τον προορισμό. Προσδιορίστε τις πραγματικές απαιτήσεις του προϊόντος αντί να αντιγράφετε ένα cookie ιστοτόπου που καταγράφηκε σε κάθε αίτημα.

Αν ο διαμεσολαβητής χρησιμοποιεί τυπικό έλεγχο ταυτότητας HTTP, χρησιμοποιήστε αντί αυτού τα διαπιστευτήρια διαμεσολαβητή του libcurl και τις υποστηριζόμενες επιλογές ελέγχου ταυτότητας. Ένα 407 με Proxy-Authenticate είναι διαφορετικό πρωτόκολλο από μια σελίδα σύνδεσης HTML που επιστρέφει token συνεδρίας.

Περιορίστε το token στο τελικό σημείο του διαμεσολαβητή και στην προβλεπόμενη διάρκεια ζωής του. Όταν αλλάζετε σε άλλον ενδιάμεσο, αντικαταστήστε τη λίστα κεφαλίδων ως μέρος αυτής της αλλαγής διαμόρφωσης. Μια γενική λίστα κεφαλίδων αιτήματος είναι κακό μέρος για ένα μυστικό που ανήκει μόνο σε έναν διαμεσολαβητή.

Σχετικά άρθρα