TsgcWebSocketHTTPServer › Proprietà › SecurityOptions

SecurityOptions Proprietà

Definisce le regole di ammissione dell'handshake: origini consentite, convalida dell'handshake RFC 6455 e intestazioni di risposta HSTS.

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

Utilizzare OriginsAllowed per limitare le origini da cui il server accetta gli handshake WebSocket. Per impostazione predefinita tutte le origini sono consentite; qualsiasi valore non vuoto abilita una whitelist e il server chiude le connessioni la cui intestazione Origin non corrisponde. I pattern accettano caratteri jolly per la porta (ad esempio http://127.0.0.1:5555 per una singola origine o http://127.0.0.1:* per accettare qualsiasi porta su quell'host). Separare più origini con virgole. Impostare OriginsAllowed su una stringa vuota ripristina il comportamento permissivo predefinito.

EnforceWebSocketVersion e ValidateWebSocketKey rafforzano l'upgrade WebSocket stesso e sono abilitati per impostazione predefinita. Quando EnforceWebSocketVersion è attivo, il server risponde a un handshake che richiede una versione diversa da 13 con HTTP 426 Upgrade Required e un'intestazione Sec-WebSocket-Version: 13, invece di completare l'upgrade. Quando ValidateWebSocketKey è attivo, il server rifiuta con HTTP 400 Bad Request qualsiasi handshake la cui Sec-WebSocket-Key sia mancante o non sia un valore base64 di 24 caratteri che si decodifica in 16 byte, come richiesto da RFC 6455. Entrambi i controlli si applicano solo al percorso RFC 6455, quindi i client Hixie76 legacy non ne sono interessati. Impostare uno dei due su False solo se è necessario interoperare con un client non conforme.

Le stesse opzioni sono disponibili su TsgcWebSocketServer e sul server http.sys TsgcWebSocketServer_HTTPAPI. Per limitare la dimensione dei messaggi in ingresso vedere MaxMessageSize.

HSTS_Options controlla l'intestazione di risposta Strict-Transport-Security definita da RFC 6797. Quando Enabled è True, ogni risposta HTTP/1.1 e HTTP/2 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 TsgcHTTPServer; non ha alcun effetto su TsgcWebSocketServer o sul server http.sys TsgcWebSocketServer_HTTPAPI.

Esempio


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;

Torna alle Proprietà