Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Följande säkerhetsöverväganden gäller för program som använder WinHTTP:
- Servercertifikat verifieras bara en gång per session. När ett certifikat har verifierats förblir det giltigt under den aktuella sessionen. Så länge certifikatets fingeravtryck matchar, vilket indikerar att certifikatet inte har ändrats, fortsätter certifikatet att valideras på nytt. Det innebär att alla ändringar i valideringsvillkoren, via protokollet, återkallningskontroll eller flaggor för att ignorera certifikatfel, inte börjar gälla när certifikatet har verifierats. För att tvinga en sådan ändring att börja gälla omedelbart måste den aktuella sessionen avslutas och en ny startas. På samma sätt kan förfallodatum för ett certifikat under en session bara identifieras om själva programmet kontrollerar certifikatservern regelbundet för att hämta förfallodata.
- Automatisk proxy omfattar nedladdning och körning av skript. Stöd för automatisk proxyidentifiering omfattar identifiering via DHCP eller DNS, nedladdning och körning av proxyskript, till exempel Java-skript. För att uppnå en högre säkerhetsnivå måste ett program undvika att skicka flaggan WINHTTP_AUTOPROXY_RUN_INPROCESS, så att identifieringen av automatisk proxy initieras utan process. Även då försöker WinHTTP som standard köra ett skript för automatisk proxy om skriptet inte kan köras korrekt. Om du anser att det här reservbeteendet utgör en oacceptabel risk inaktiverar du återställningsbeteendet med flaggan WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY.
- WINHTTP_STATUS_CALLBACK funktioner måste returneras omgående. När du skriver någon av dessa återanropsfunktioner bör du vara försiktig så att den inte blockeras. Till exempel bör varken motringningen eller någon funktion som anropas visa en användardialogruta eller vänta på en händelse. Om en WINHTTP_STATUS_CALLBACK funktion blockeras påverkar den WinHTTP:s interna schemaläggning och gör att andra begäranden i samma process nekas tjänsten.
- WINHTTP_STATUS_CALLBACK funktioner måste vara reentrant. När du skriver ett återanrop bör du undvika statiska variabler eller andra konstruktioner som är osäkra under reentrance och undvika att anropa andra funktioner som inte är reentrant.
- Om en asynkron åtgärd är möjlig skickar du NULLs för OUT-parametrar. Om du har aktiverat asynkron åtgärd genom att registrera en återanropsfunktion, skicka alltid NULL- värden för sådana OUT-parametrar som lpdwDataAvailable för WinHttpQueryDataAvailable, lpdwBytesRead för WinHttpReadDataeller lpdwBytesWritten för WinHttpWriteData. Under vissa omständigheter avslutas den anropande tråden innan åtgärden slutförs, och om OUT-parametrarna inte NULL-kan funktionen sluta skriva till minne som redan har frigjorts.
- Passport-autentisering är inte idiotsäkert. Alla cookiebaserade autentiseringsscheman är sårbara för angrepp. Passport version 1.4 är cookiebaserad och omfattas därför av de sårbarheter som är associerade med alla cookie- eller formulärbaserade autentiseringsscheman. Passport-stöd är inaktiverat som standard i WinHTTP; det kan aktiveras med WinHttpSetOption.
- Grundläggande autentisering bör endast användas via en säker anslutning. Grundläggande autentisering, som skickar användarnamnet och lösenordet i klartext (se RFC 2617), bör endast användas över krypterade SSL- eller TLS-anslutningar.
- Att ange principen för automatisk inloggning till "låg" kan utgöra en risk. När principen för automatisk inloggning är inställd på låg kan en användares inloggningsautentiseringsuppgifter användas för att autentisera mot alla webbplatser. Det är dock inte bra säkerhetspraxis att autentisera mot webbplatser som du inte litar på.
- SSL 2.0-anslutningar används inte om de inte uttryckligen är aktiverade. Säkerhetsprotokollen TLS 1.0 och SSL 3.0 anses vara säkrare än SSL 2.0. Som standard begär WinHTTP TLS 1.0 eller SSL 3.0 när du förhandlar om en SSL-anslutning, inte SSL 2.0. SSL 2.0-stöd i WinHTTP kan bara aktiveras genom att anropa WinHttpSetOption.
- Kontroll av återkallade certifikat måste uttryckligen begäras. När du utför certifikatautentisering kontrollerar WinHTTP som standard inte om serverns certifikat har återkallats. Kontroll av återkallade certifikat kan aktiveras med WinHttpSetOption.
- Program måste se till att en session mappas till en enda identitet. En WinHTTP-session ska mappas till en och endast en identitet. En WinHTTP-session används alltså för att hantera Internetaktiviteten för en enda autentiserad användare eller en grupp anonyma användare. Men eftersom WinHTTP inte framtvingar den här mappningen automatiskt måste ditt program vidta åtgärder för att säkerställa att endast en enda identitet ingår.
- Åtgärder på en WinHTTP-begärandereferens ska synkroniseras. Ett program bör till exempel undvika att stänga ett begärandehandtag i en tråd medan en annan tråd skickar eller tar emot en begäran. Om du vill avsluta en asynkron begäran stänger du begärandehandtaget under ett återanropsmeddelande. Om du vill avsluta en synkron begäran stänger du handtaget när det tidigare WinHTTP-anropet returneras.
- Spårningsfiler innehåller känslig information. Spårningsfiler skyddas med hjälp av Access-Control listor (ACL: er) så att man normalt bara kan nås av den lokala administratören eller av användarkontot som skapade den. Undvik att kompromettera spårningsfiler genom obehörig åtkomst.
- Undvik att skicka känsliga data viaWinHttpSetOption. Ange inte ett användarnamn, lösenord eller andra autentiseringsuppgifter för att WinHttpSetOption eftersom du inte har någon kontroll över det autentiseringsschema som används, och känsliga data kan oväntat skickas i klartext. Använd WinHttpQueryAuthSchemes och WinHttpSetCredentials i stället för WinHttpSetOption för att ange autentiseringsuppgifter.
- Automatisk omdirigering kan utgöra en säkerhetsrisk. Som standard följs omdirigering (ett 302-meddelande) automatiskt även för en POST. För att undvika risken för falska omdirigeringar bör program inaktivera automatisk omdirigering eller övervaka omdirigering i återanrop när känslig information skickas.
- Användardefinierade rubriker överförs över omdirigeringar oförändrade. Användardefinierade rubriker, till exempel cookies som läggs till med WinHTTPAddRequestHeaders, överförs över omdirigeringar utan ändringar, medan rubriker som genereras av WinHTTP uppdateras automatiskt. Om överföring av en användardefinierad rubrik över omdirigeringar utgör en säkerhetsrisk använder du WINHTTP_STATUS_CALLBACK motringning med WINHTTP_CALLBACK_STATUS_REDIRECT slutförande för att ändra rubriken i fråga när en omdirigering sker.
- WinHTTP är inte återaktivering i synkront läge. Eftersom WinHTTP inte är återaktivera i synkront läge ska du inte schemalägga asynkrona proceduranrop (APC) som kan anropa WinHTTP i en programtråd som körs i en WinHTTP-funktion. I synkront läge utför WinHTTP en "aviseringsbar väntan", och om den väntande tråden föregrips att köra en APC och sedan senare går in i WinHTTP igen kan WinHTTP:s interna tillstånd skadas.