TsgcHTTPServer › Eigenschappen › SecurityOptions
Toelatingsregels voor de handshake, overgeërfd van de gedeelde server-engine; de handshakecontroles gelden alleen voor het WebSocket-upgradepad en worden op dit component nooit geactiveerd, maar HSTS_Options is hier wel van toepassing (zie Opmerkingen).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Naam | Standaard | Beschrijving |
|---|---|---|
OriginsAllowed | "" | Door komma's gescheiden whitelist van origins die worden geaccepteerd voor browser-WebSocket-handshakes. Leeg staat alle origins toe. |
EnforceWebSocketVersion | True | Weigert een RFC 6455-handshake waarvan de Sec-WebSocket-Version niet 13 is. |
ValidateWebSocketKey | True | Weigert een RFC 6455-handshake waarvan de Sec-WebSocket-Key geen geldige base64-nonce van 16 bytes is. |
HSTS_Options.Enabled | False | Schakelt de Strict-Transport-Security-responseheader in. Zie Opmerkingen. |
HSTS_Options.MaxAge | 31536000 | Waarde in seconden voor de max-age-richtlijn van de header (standaard is één jaar). SSL Labs vereist minimaal 15552000 (zes maanden) voor een A+-beoordeling. |
HSTS_Options.IncludeSubDomains | False | Voegt includeSubDomains toe aan de header. Schakel dit alleen in als elk subdomein via HTTPS wordt aangeboden. |
HSTS_Options.Preload | False | Voegt preload toe aan de header. Schakel dit alleen in voor domeinen die zijn ingediend bij de HSTS-preloadlijst van de browsers. |
SecurityOptions is ongewijzigd overgeërfd van de gedeelde server-engine die ook TsgcWebSocketHTTPServer aandrijft, waar OriginsAllowed, EnforceWebSocketVersion en ValidateWebSocketKey de WebSocket-upgradehandshake bewaken. TsgcHTTPServer voert nooit een WebSocket-handshake uit, dus geen van deze drie controles wordt ooit uitgevoerd op dit component: elk verzoek wordt afgehandeld via het gewone HTTP-pad (OnCommandGet / OnCommandOther / DocumentRoot). Deze drie leden blijven gepubliceerd voor interfacecompatibiliteit met de gedeelde engine; laat ze op hun standaardwaarden staan. Om te beperken welke client-IP's een HTTP-eindpunt kunnen bereiken, gebruikt u Firewall of RateLimiter, of inspecteert u de Origin-header zelf binnen OnBeforeCommand.
HSTS_Options is de uitzondering: dit is wel van toepassing op dit component. Het regelt de Strict-Transport-Security-responseheader zoals gedefinieerd in RFC 6797. Wanneer Enabled op True staat, bevat elke respons die via TLS wordt verzonden een Strict-Transport-Security-header, opgebouwd uit MaxAge, IncludeSubDomains en Preload, bijvoorbeeld Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. De header wordt nooit verzonden via gewone HTTP, wordt overgeslagen als de toepassing al een Strict-Transport-Security-header op de respons heeft ingesteld, en wordt niet toegevoegd aan responsen waarvan de toepassing de headers zelf schrijft (streaming). HSTS_Options is alleen beschikbaar op dit component en op TsgcWebSocketHTTPServer; het heeft geen effect op TsgcWebSocketServer of de http.sys-server TsgcWebSocketServer_HTTPAPI.
OriginsAllowed, EnforceWebSocketVersion en ValidateWebSocketKey worden getoond voor de volledigheid; ze hebben geen waarneembaar effect op TsgcHTTPServer. HSTS_Options.Enabled en HSTS_Options.MaxAge hebben wel een effect: ze voegen de Strict-Transport-Security-header toe aan responsen die via TLS worden verzonden.
oServer := TsgcHTTPServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.SecurityOptions.HSTS_Options.Enabled := true;
oServer.SecurityOptions.HSTS_Options.MaxAge := 31536000;
oServer.Active := true;