TsgcHTTPServer › Proprietà › SecurityOptions
Regole di ammissione dell'handshake ereditate dal motore server condiviso; i controlli dell'handshake si applicano solo al percorso di upgrade WebSocket e non si attivano mai su questo componente, ma HSTS_Options si applica qui (vedere Note).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Nome | Predefinito | Descrizione |
|---|---|---|
OriginsAllowed | "" | Whitelist separata da virgole delle origini accettate per gli handshake WebSocket del browser. Se vuota, consente tutte le origini. |
EnforceWebSocketVersion | True | Rifiuta un handshake RFC 6455 la cui Sec-WebSocket-Version non è 13. |
ValidateWebSocketKey | True | Rifiuta un handshake RFC 6455 la cui Sec-WebSocket-Key non è un nonce base64 valido di 16 byte. |
HSTS_Options.Enabled | False | Abilita l'intestazione di risposta Strict-Transport-Security. Vedere Note. |
HSTS_Options.MaxAge | 31536000 | Valore in secondi per la direttiva max-age dell'intestazione (il valore predefinito è un anno). SSL Labs richiede almeno 15552000 (sei mesi) per una valutazione A+. |
HSTS_Options.IncludeSubDomains | False | Aggiunge includeSubDomains all'intestazione. Abilitare solo se ogni sottodominio è servito tramite HTTPS. |
HSTS_Options.Preload | False | Aggiunge preload all'intestazione. Abilitare solo per i domini inviati all'elenco di preload HSTS dei browser. |
SecurityOptions è ereditata invariata dal motore server condiviso che alimenta anche TsgcWebSocketHTTPServer, dove OriginsAllowed, EnforceWebSocketVersion e ValidateWebSocketKey regolano l'ammissione all'handshake di upgrade WebSocket. TsgcHTTPServer non esegue mai un handshake WebSocket, quindi nessuno di questi tre controlli viene mai eseguito su questo componente: ogni richiesta è gestita dal percorso HTTP puro (OnCommandGet / OnCommandOther / DocumentRoot). Questi tre membri rimangono pubblicati per compatibilità dell'interfaccia con il motore condiviso; lasciarli ai valori predefiniti. Per limitare quali IP client possono raggiungere un endpoint HTTP, utilizzare Firewall o RateLimiter, oppure ispezionare autonomamente l'intestazione Origin all'interno di OnBeforeCommand.
HSTS_Options è l'eccezione: si applica a questo componente. Controlla l'intestazione di risposta Strict-Transport-Security definita da RFC 6797. Quando Enabled è True, ogni risposta inviata su TLS include un'intestazione Strict-Transport-Security costruita a partire da MaxAge, IncludeSubDomains e Preload, ad esempio Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. L'intestazione non viene mai inviata su HTTP semplice, viene omessa se l'applicazione ha già impostato un'intestazione Strict-Transport-Security sulla risposta e non viene aggiunta alle risposte le cui intestazioni sono scritte direttamente dall'applicazione (streaming). HSTS_Options è disponibile solo su questo componente e su TsgcWebSocketHTTPServer; non ha alcun effetto su TsgcWebSocketServer o sul server http.sys TsgcWebSocketServer_HTTPAPI.
OriginsAllowed, EnforceWebSocketVersion e ValidateWebSocketKey sono mostrati per completezza; non hanno alcun effetto osservabile su TsgcHTTPServer. HSTS_Options.Enabled e HSTS_Options.MaxAge hanno invece un effetto: aggiungono l'intestazione Strict-Transport-Security alle risposte inviate su TLS.
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;