TsgcHTTPServer › Proprietà › SecurityOptions

SecurityOptions Proprietà

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).

Sintassi

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Membri

NomePredefinitoDescrizione
OriginsAllowed""Whitelist separata da virgole delle origini accettate per gli handshake WebSocket del browser. Se vuota, consente tutte le origini.
EnforceWebSocketVersionTrueRifiuta un handshake RFC 6455 la cui Sec-WebSocket-Version non è 13.
ValidateWebSocketKeyTrueRifiuta un handshake RFC 6455 la cui Sec-WebSocket-Key non è un nonce base64 valido di 16 byte.
HSTS_Options.EnabledFalseAbilita l'intestazione di risposta Strict-Transport-Security. Vedere Note.
HSTS_Options.MaxAge31536000Valore 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.IncludeSubDomainsFalseAggiunge includeSubDomains all'intestazione. Abilitare solo se ogni sottodominio è servito tramite HTTPS.
HSTS_Options.PreloadFalseAggiunge preload all'intestazione. Abilitare solo per i domini inviati all'elenco di preload HSTS dei browser.

Note

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.

Esempio

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;

Torna alle Proprietà