Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De volgende beveiligingsoverwegingen zijn van toepassing op toepassingen die Gebruikmaken van WinHTTP:
- Servercertificaten worden slechts eenmaal per sessie geverifieerd. Nadat een certificaat is geverifieerd, blijft het geldig voor de duur van de huidige sessie. Zolang de vingerafdruk van het certificaat overeenkomt, wat aangeeft dat het certificaat niet is gewijzigd, blijft het certificaat opnieuw gevalideerd. Als gevolg hiervan wordt elke wijziging in de validatiecriteria, via het protocol, intrekkingscontrole of certificaatfout negeren vlaggen, niet van kracht zodra het certificaat is geverifieerd. Als u wilt afdwingen dat een dergelijke wijziging onmiddellijk van kracht wordt, moet de huidige sessie worden beëindigd en moet er een nieuwe worden gestart. Op dezelfde manier kan het verlopen van een certificaat tijdens de sessie alleen worden gedetecteerd als de toepassing zelf de certificaatserver periodiek controleert om verloopgegevens op te halen.
- Automatische proxy omvat het downloaden en uitvoeren van scripts. De ondersteuning voor automatische proxydetectie omvat het detecteren via DHCP of DNS, het downloaden en uitvoeren van proxyscripts zoals Java-scripts. Als u een hogere mate van beveiliging wilt bereiken, moet een toepassing voorkomen dat de vlag WINHTTP_AUTOPROXY_RUN_INPROCESS wordt doorgegeven, zodat de automatische proxydetectie buiten het proces wordt gestart. Zelfs dan probeert WinHTTP standaard een automatisch proxyscript in het proces uit te voeren als het script niet goed kan worden uitgevoerd. Als u denkt dat dit terugvalgedrag een onaanvaardbaar risico vormt, schakelt u het terugvalgedrag uit met de WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY vlag.
- WINHTTP_STATUS_CALLBACK functies moeten onmiddellijk worden geretourneerd. Wanneer u een van deze callback-functies schrijft, moet u ervoor zorgen dat deze niet wordt geblokkeerd. De callback of een functie die wordt aangeroepen, moet bijvoorbeeld geen gebruikersdialoogvenster weergeven of wachten op een gebeurtenis. Als een WINHTTP_STATUS_CALLBACK functie blokkeert, is dit van invloed op de interne planning van WinHTTP en worden andere aanvragen binnen hetzelfde proces geweigerd.
- WINHTTP_STATUS_CALLBACK functies moeten opnieuw worden opgegeven. Vermijd bij het schrijven van een callback statische variabelen of andere constructies die onveilig zijn onder herverwijl en vermijd het aanroepen van andere functies die niet opnieuw worden toegestaan.
- Als asynchrone bewerking mogelijk is, geeft u NULLS door voor OUT-parameters. Als u asynchrone bewerking hebt ingeschakeld door een callback-functie te registreren, geef altijd NULL--waarden door voor dergelijke OUT-parameters als lpdwDataAvailable voor WinHttpQueryDataAvailable, lpdwBytesRead voor WinHttpReadDataof lpdwBytesWritten voor WinHttpWriteData. In sommige gevallen wordt de aanroepende thread beëindigd voordat de bewerking is voltooid en als de OUT-parameters niet NULL-, kan de functie uiteindelijk schrijven naar geheugen dat al is vrijgemaakt.
- Paspoortverificatie is niet onfeilbaar. Elk verificatieschema op basis van cookies is kwetsbaar voor aanvallen. Passport versie 1.4 is gebaseerd op cookies en is daarom onderhevig aan de beveiligingsproblemen die zijn gekoppeld aan een verificatieschema op basis van cookies of formulieren. Passport-ondersteuning is standaard uitgeschakeld in WinHTTP; deze kan worden ingeschakeld met WinHttpSetOption-.
- Basisverificatie mag alleen worden gebruikt via een beveiligde verbinding. Basisverificatie, die de gebruikersnaam en het wachtwoord in duidelijke tekst verzendt (zie RFC 2617), mag alleen worden gebruikt via versleutelde SSL- of TLS-verbindingen.
- Het instellen van beleid voor automatisch aanmelden op 'laag' kan een risico vormen. Wanneer het beleid voor automatisch aanmelden is ingesteld op laag, kan de aanmeldingsreferentie van een gebruiker worden gebruikt om te verifiëren bij elke site. Het is echter geen goede beveiligingspraktijk om te verifiëren bij sites die u niet vertrouwt.
- SSL 2.0-verbindingen worden niet gebruikt, tenzij deze expliciet zijn ingeschakeld. De TLS 1.0- en SSL 3.0-beveiligingsprotocollen worden beschouwd als veiliger dan SSL 2.0. WinHTTP vraagt TLS 1.0 of SSL 3.0 standaard aan bij het onderhandelen over een SSL-verbinding, niet SSL 2.0. SSL 2.0-ondersteuning in WinHTTP kan alleen worden ingeschakeld door WinHttpSetOption-aan te roepen.
- Certificaatintrekkingscontrole moet expliciet worden aangevraagd. Bij het uitvoeren van certificaatverificatie controleert WinHTTP standaard niet of het certificaat van de server is ingetrokken. Certificaatintrekkingscontrole kan worden ingeschakeld met WinHttpSetOption-.
- Toepassingen moeten ervoor zorgen dat een sessie wordt toegewezen aan één identiteit. Een WinHTTP-sessie moet worden toegewezen aan één en slechts één identiteit; Een WinHTTP-sessie wordt gebruikt om de internetactiviteit van één geverifieerde gebruiker of een groep anonieme gebruikers te beheren. Omdat WinHTTP deze toewijzing echter niet automatisch afdwingt, moet uw toepassing stappen ondernemen om ervoor te zorgen dat er slechts één identiteit bij betrokken is.
- Bewerkingen op een WinHTTP-aanvraaggreep moeten worden gesynchroniseerd. Een toepassing moet bijvoorbeeld voorkomen dat een aanvraaghandgreep op de ene thread wordt gesloten terwijl een andere thread een aanvraag verzendt of ontvangt. Als u een asynchrone aanvraag wilt beëindigen, sluit u de aanvraagafhandeling tijdens een callbackmelding. Als u een synchrone aanvraag wilt beëindigen, sluit u de ingang wanneer de vorige WinHTTP-aanroep terugkeert.
- Traceringsbestanden bevatten gevoelige informatie. Traceringsbestanden worden beveiligd met behulp van Access-Control Lijsten (ACL's), zodat deze normaal gesproken alleen toegankelijk zijn door de lokale beheerder of door het gebruikersaccount dat deze heeft gemaakt. Voorkom dat traceringsbestanden worden aangetast door onbevoegde toegang.
- Vermijd het doorgeven van gevoelige gegevens viaWinHttpSetOption-. Geef geen gebruikersnaam, wachtwoord of andere referenties op voor WinHttpSetOption- omdat u geen controle hebt over het gebruikte verificatieschema en de gevoelige gegevens onverwacht in duidelijke tekst kunnen worden verzonden. Gebruik WinHttpQueryAuthSchemes en WinHttpSetCredentials in plaats van WinHttpSetOption- om referenties in te stellen.
- Automatische omleiding kan een beveiligingsrisico vormen. Standaard wordt omleiding (een 302-bericht) automatisch gevolgd, zelfs voor een POST. Om de mogelijkheid van valse omleidingen te voorkomen, moeten toepassingen automatisch omleiden of redirectioneren in callbacks bij het plaatsen van gevoelige informatie uitschakelen.
- Door de gebruiker gedefinieerde headers worden overgedragen tussen omleidingen ongewijzigd. Door de gebruiker gedefinieerde headers, zoals cookies die zijn toegevoegd met WinHTTPAddRequestHeaders, worden overgedragen via omleidingen zonder wijziging, terwijl headers die door WinHTTP worden gegenereerd, automatisch worden bijgewerkt. Als het overdragen van een door de gebruiker gedefinieerde header tussen omleidingen een beveiligingsrisico vormt, gebruikt u de WINHTTP_STATUS_CALLBACK callback met de WINHTTP_CALLBACK_STATUS_REDIRECT voltooiing om de betreffende header te wijzigen wanneer er een omleiding plaatsvindt.
- WinHTTP is niet opnieuw in de synchrone modus. Omdat WinHTTP niet opnieuw wordt geactiveerd in de synchrone modus, plant u geen asynchrone procedureaanroepen (APC) die WinHTTP kunnen aanroepen op een toepassingsthread die wordt uitgevoerd in een WinHTTP-functie. In de synchrone modus voert WinHTTP een 'waarschuwingsbaar wachten' uit en als de wachtthread vooraf is ingeschakeld om een APC uit te voeren en vervolgens winHTTP later opnieuw in te voeren, kan de interne status van WinHTTP worden beschadigd.