TsgcWebSocketLoadBalancerServerProprietà › SecurityOptions

SecurityOptions Proprietà

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

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.

Note

Utilizzare OriginsAllowed per stabilire da quali origini del browser il load balancer accetta gli handshake WebSocket. Per impostazione predefinita tutte le origini sono consentite; qualsiasi valore non vuoto abilita una whitelist e il load balancer chiude le connessioni la cui intestazione Origin non corrisponde, prima ancora che venga selezionato un backend. 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. Impostando OriginsAllowed su una stringa vuota si ripristina l'impostazione predefinita permissiva.

EnforceWebSocketVersion e ValidateWebSocketKey rafforzano l'upgrade WebSocket stesso e sono abilitati per impostazione predefinita. Quando EnforceWebSocketVersion è attivo, il load balancer 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 load balancer 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, TsgcWebSocketHTTPServer e sul server http.sys TsgcWebSocketServer_HTTPAPI. Per limitare la dimensione dei messaggi in ingresso vedere MaxMessageSize.

Esempio


oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'https://app.example.com';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;

Torna alle Proprietà