TsgcWebSocketLoadBalancerServer › Proprietà › SecurityOptions
Definisce le regole di ammissione dell'handshake: origini consentite e convalida dell'handshake RFC 6455.
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. |
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.
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'https://app.example.com';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;