TsgcWebSocketProxyServer › Proprietà › 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 limitare le origini da cui il proxy accetta gli handshake WebSocket prima che il traffico venga inoltrato al server upstream definito in Proxy. Per impostazione predefinita tutte le origini sono consentite; qualsiasi valore non vuoto abilita una whitelist e il proxy 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 le origini multiple con virgole. Impostare OriginsAllowed su una stringa vuota ripristina l'impostazione predefinita permissiva.

EnforceWebSocketVersion e ValidateWebSocketKey rafforzano l'upgrade WebSocket stesso e sono abilitati per impostazione predefinita. Quando EnforceWebSocketVersion è attivo, il proxy 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 proxy 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


oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oProxy.SecurityOptions.EnforceWebSocketVersion := true;
oProxy.SecurityOptions.ValidateWebSocketKey := true;
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 8080;
oProxy.Active := true;

Torna alle Proprietà