TsgcHTTPServer › Eigenschaften › SecurityOptions
Handshake-Zulassungsregeln, die von der gemeinsamen Server-Engine geerbt wurden; die Handshake-Prüfungen gelten nur für den WebSocket-Upgrade-Pfad und werden auf dieser Komponente nie ausgelöst, aber HSTS_Options gilt hier (siehe Hinweise).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Name | Hinweise | Beschreibung |
|---|---|---|
OriginsAllowed | "" | TsgcWebSocketHTTPServer.SecurityOptions |
EnforceWebSocketVersion | True | Lehnt einen RFC-6455-Handshake ab, dessen Sec-WebSocket-Version nicht 13 ist. |
ValidateWebSocketKey | True | Lehnt einen RFC-6455-Handshake ab, dessen Sec-WebSocket-Key keine gültige 16-Byte-Base64-Nonce ist. |
HSTS_Options.Enabled | False | Aktiviert den Strict-Transport-Security-Antwort-Header. Siehe Hinweise. |
HSTS_Options.MaxAge | 31536000 | Wert 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.IncludeSubDomains | False | Fügt includeSubDomains zum Header hinzu. Nur aktivieren, wenn jede Subdomain über HTTPS bereitgestellt wird. |
HSTS_Options.Preload | False | Fügt preload zum Header hinzu. Nur für Domains aktivieren, die in die HSTS-Preload-Liste der Browser aufgenommen wurden. |
SecurityOptions wird unverändert von der gemeinsamen Server-Engine geerbt, die auch TsgcWebSocketHTTPServer antreibt, wo OriginsAllowed, EnforceWebSocketVersion und ValidateWebSocketKey den WebSocket-Upgrade-Handshake absichern. TsgcHTTPServer führt niemals einen WebSocket-Handshake durch, sodass keine dieser drei Prüfungen jemals auf dieser Komponente ausgeführt wird: Jede Anfrage wird über den einfachen HTTP-Pfad behandelt (OnCommandGet / OnCommandOther / DocumentRoot). Diese drei Member bleiben aus Gründen der Schnittstellenkompatibilität mit der gemeinsamen Engine veröffentlicht; belassen Sie sie bei ihren Standardwerten. Um einzuschränken, welche Client-IPs einen HTTP-Endpunkt erreichen können, verwenden Sie Firewall oder RateLimiter, oder untersuchen Sie den Origin-Header selbst innerhalb von OnBeforeCommand.
HSTS_Options ist die Ausnahme: Es gilt für diese Komponente. Es steuert den in RFC 6797 definierten Strict-Transport-Security-Antwort-Header. Wenn Enabled auf True gesetzt ist, enthält jede über TLS gesendete 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 TsgcWebSocketHTTPServer verfügbar; es hat keine Auswirkung auf TsgcWebSocketServer oder den http.sys-Server TsgcWebSocketServer_HTTPAPI.
OriginsAllowed, EnforceWebSocketVersion und ValidateWebSocketKey werden der Vollständigkeit halber angezeigt; sie haben keine beobachtbare Auswirkung auf TsgcHTTPServer. HSTS_Options.Enabled und HSTS_Options.MaxAge haben eine Auswirkung: Sie fügen den Strict-Transport-Security-Header zu Antworten hinzu, die über TLS gesendet werden.
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;