TsgcWebSocketHTTPServer › Properties › SecurityOptions
Definieert de toelatingsregels voor de handshake: toegestane origins, RFC 6455-handshakevalidatie en HSTS-responseheaders.
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. |
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.
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;