TsgcWebSocketHTTPServer › Proprietà › SecurityOptions
Definisce le regole di ammissione dell'handshake: origini consentite, convalida dell'handshake RFC 6455 e intestazioni di risposta HSTS.
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. |
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.
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;