Sommige proxyproducten definiëren een loginproces dat een cookie of token levert voor volgende proxyverzoeken. Als dat token op CONNECT moet verschijnen, houd het dan gescheiden van cookies die bedoeld zijn voor de website in de tunnel.

libcurl biedt een aparte lijst met aangepaste headers voor de proxy. In een al geïnitialiseerde C-applicatie kan een configuratiefragment er zo uitzien:

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);

Dit is alleen gepast wanneer het gedocumenteerde loginprotocol van de proxy die header vereist. Controleer de resultaten van toewijzing en opties in de omringende code, houd de lijst tot de overdracht is voltooid en wis of vervang daarna de pointer van de handle voordat de lijst wordt vrijgegeven.

Met afzonderlijke headerafhandeling stuurt libcurl de proxylijst op CONNECT en de bestemmingslijst op het verzoek in de opgezette tunnel. Zo ontvangt de proxy het token van de leverancier zonder dat dit token een websitecookie wordt. Deze scheiding is standaard sinds libcurl 7.42.1; de expliciete optie maakt het beoogde gedrag zichtbaar.

Een browsercookiepot is een ander mechanisme

Het inschakelen van de cookiemotor van libcurl of het instellen van een cookie voor de bestemming reproduceert niet automatisch de eigen proxylogin van een browser. CONNECT gebeurt vóór de HTTPS-uitwisseling met de bestemming. Bepaal de werkelijke vereisten van het product in plaats van een onderschepte sitecookie in elk verzoek te kopiëren.

Als de proxy standaard HTTP-proxyauthenticatie gebruikt, gebruik dan in plaats daarvan de proxyreferenties van libcurl en de ondersteunde authenticatieopties. Een 407 met Proxy-Authenticate is een ander protocol dan een HTML-loginpagina die een sessietoken retourneert.

Beperk het token tot zijn proxy-eindpunt en beoogde levensduur. Bij overstap naar een andere tussenpartij vervangt u de headerlijst als onderdeel van die configuratiewijziging. Een algemene verzoekheaderlijst is een slechte plek voor een geheim dat alleen bij één proxy hoort.

Gerelateerde artikelen