TsgcWebSocketHTTPServer › Eigenschaften › SecurityOptions

SecurityOptions Eigenschaft

Definiert Handshake-Zulassungsregeln: erlaubte Origins, RFC-6455-Handshake-Validierung und HSTS-Antwort-Header.

Syntax

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Members

NameHinweiseBeschreibung
OriginsAllowed""TsgcWebSocketHTTPServer.SecurityOptions
EnforceWebSocketVersionTrueLehnt einen RFC-6455-Handshake ab, dessen Sec-WebSocket-Version nicht 13 ist.
ValidateWebSocketKeyTrueLehnt einen RFC-6455-Handshake ab, dessen Sec-WebSocket-Key keine gültige 16-Byte-Base64-Nonce ist.
HSTS_Options.EnabledFalseAktiviert den Strict-Transport-Security-Antwort-Header. Siehe Hinweise.
HSTS_Options.MaxAge31536000Wert in Sekunden für die max-age-Direktive des Headers (Standard ist ein Jahr). SSL Labs verlangt mindestens 15552000 (sechs Monate) für eine A+-Bewertung.
HSTS_Options.IncludeSubDomainsFalseFügt includeSubDomains zum Header hinzu. Nur aktivieren, wenn jede Subdomain über HTTPS bereitgestellt wird.
HSTS_Options.PreloadFalseFügt preload zum Header hinzu. Nur für Domains aktivieren, die in die HSTS-Preload-Liste der Browser aufgenommen wurden.

Hinweise

Verwenden Sie OriginsAllowed, um einzuschränken, von welchen Origins der Server WebSocket-Handshakes akzeptiert. Standardmäßig sind alle Origins zulässig; jeder nicht leere Wert aktiviert eine Whitelist, und der Server schließt Verbindungen, deren Origin-Header nicht übereinstimmt. Muster akzeptieren Platzhalter für den Port (zum Beispiel http://127.0.0.1:5555 für einen einzelnen Origin oder http://127.0.0.1:*, um jeden Port auf diesem Host zu akzeptieren). Trennen Sie mehrere Origins mit Kommas. Das Setzen von OriginsAllowed auf einen leeren String stellt den freizügigen Standard wieder her.

EnforceWebSocketVersion und ValidateWebSocketKey härten den eigentlichen WebSocket-Upgrade ab und sind standardmäßig aktiviert. Wenn EnforceWebSocketVersion aktiv ist, beantwortet der Server einen Handshake, der eine andere Version als 13 anfordert, mit HTTP 426 Upgrade Required und einem Sec-WebSocket-Version: 13-Header, anstatt den Upgrade abzuschließen. Wenn ValidateWebSocketKey aktiv ist, lehnt der Server mit HTTP 400 Bad Request jeden Handshake ab, dessen Sec-WebSocket-Key fehlt oder kein 24-stelliger Base64-Wert ist, der zu 16 Bytes dekodiert, wie es RFC 6455 verlangt. Beide Prüfungen gelten nur für den RFC-6455-Pfad, sodass ältere Hixie76-Clients nicht betroffen sind. Setzen Sie eine der beiden nur dann auf False, wenn Sie mit einem nicht konformen Client zusammenarbeiten müssen.

Dieselben Optionen sind auf TsgcWebSocketServer und dem http.sys-Server TsgcWebSocketServer_HTTPAPI verfügbar. Um die Größe eingehender Nachrichten zu begrenzen, siehe MaxMessageSize.

HSTS_Options steuert den in RFC 6797 definierten Strict-Transport-Security-Antwort-Header. Wenn Enabled auf True gesetzt ist, enthält jede über TLS gesendete HTTP/1.1- und HTTP/2-Antwort einen Strict-Transport-Security-Header, der aus MaxAge, IncludeSubDomains und Preload zusammengesetzt wird, zum Beispiel Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. Der Header wird niemals über einfaches HTTP gesendet, wird übersprungen, wenn die Anwendung bereits einen Strict-Transport-Security-Header für die Antwort gesetzt hat, und wird nicht zu Antworten hinzugefügt, deren Header die Anwendung selbst schreibt (Streaming). HSTS_Options ist nur auf dieser Komponente und auf TsgcHTTPServer verfügbar; es hat keine Auswirkung auf TsgcWebSocketServer oder den http.sys-Server TsgcWebSocketServer_HTTPAPI.

Beispiel


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;

Zurück zu Properties