TsgcWebSocketHTTPServer › Properties › SecurityOptions

SecurityOptions Eigenschap

Definieert de toelatingsregels voor de handshake: toegestane origins, RFC 6455-handshakevalidatie en HSTS-responseheaders.

Syntaxis

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Members

NaamStandaardBeschrijving
OriginsAllowed""Door komma's gescheiden whitelist van origins die worden geaccepteerd voor browser-WebSocket-handshakes. Leeg staat alle origins toe.
EnforceWebSocketVersionTrueWeigert een RFC 6455-handshake waarvan de Sec-WebSocket-Version niet 13 is.
ValidateWebSocketKeyTrueWeigert een RFC 6455-handshake waarvan de Sec-WebSocket-Key geen geldige base64-nonce van 16 bytes is.
HSTS_Options.EnabledFalseSchakelt de Strict-Transport-Security-responseheader in. Zie Opmerkingen.
HSTS_Options.MaxAge31536000Waarde 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.IncludeSubDomainsFalseVoegt includeSubDomains toe aan de header. Schakel dit alleen in als elk subdomein via HTTPS wordt aangeboden.
HSTS_Options.PreloadFalseVoegt preload toe aan de header. Schakel dit alleen in voor domeinen die zijn ingediend bij de HSTS-preloadlijst van de browsers.

Opmerkingen

Gebruik OriginsAllowed om te beperken welke origins de server WebSocket-handshakes van accepteert. Standaard zijn alle origins toegestaan; elke niet-lege waarde schakelt een allowlist in en de server sluit verbindingen waarvan de Origin-header niet overeenkomt. Patronen accepteren jokertekens voor de poort (bijv. http://127.0.0.1:5555 voor één origin of http://127.0.0.1:* om elke poort op die host te accepteren). Scheid meerdere origins met komma's. Als u OriginsAllowed instelt op een lege string, wordt de permissieve standaardinstelling hersteld.

EnforceWebSocketVersion en ValidateWebSocketKey verstevigen de WebSocket-upgrade zelf en zijn standaard ingeschakeld. Wanneer EnforceWebSocketVersion actief is, beantwoordt de server een handshake die een andere versie dan 13 aanvraagt met HTTP 426 Upgrade Required en een Sec-WebSocket-Version: 13-header, in plaats van de upgrade te voltooien. Wanneer ValidateWebSocketKey actief is, weigert de server met HTTP 400 Bad Request elke handshake waarvan de Sec-WebSocket-Key ontbreekt of geen base64-waarde van 24 tekens is die decodeert naar 16 bytes, zoals vereist door RFC 6455. Beide controles gelden alleen voor het RFC 6455-pad, zodat legacy Hixie76-clients niet worden beïnvloed. Stel een van beide alleen in op False als u moet samenwerken met een niet-conforme client.

Dezelfde opties zijn beschikbaar op TsgcWebSocketServer en de http.sys-server TsgcWebSocketServer_HTTPAPI. Om de grootte van inkomende berichten te begrenzen, zie MaxMessageSize.

HSTS_Options regelt de Strict-Transport-Security-responseheader zoals gedefinieerd in RFC 6797. Wanneer Enabled op True staat, bevat elke HTTP/1.1- en HTTP/2-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 TsgcHTTPServer; het heeft geen effect op TsgcWebSocketServer of de http.sys-server TsgcWebSocketServer_HTTPAPI.

Voorbeeld


oServer := TsgcWebSocketHTTPServer.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;

Terug naar Properties