TsgcWebSocketLoadBalancerServer › Propriétés › SecurityOptions
Définit les règles d'admission du handshake : origines autorisées et validation du handshake RFC 6455.
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Nom | Par défaut | Description |
|---|---|---|
OriginsAllowed | "" | Liste blanche d'origines séparées par des virgules, acceptées pour les handshakes WebSocket des navigateurs. Vide autorise toutes les origines. |
EnforceWebSocketVersion | True
| Rejette un handshake RFC 6455 dont la Sec-WebSocket-Version n'est pas 13. |
ValidateWebSocketKey | True
| Rejette un handshake RFC 6455 dont la Sec-WebSocket-Key n'est pas un nonce base64 valide de 16 octets. |
Utilisez OriginsAllowed pour verrouiller les origines de navigateur depuis lesquelles l'équilibreur de charge accepte les handshakes WebSocket. Par défaut, toutes les origines sont autorisées ; toute valeur non vide active une liste blanche et l'équilibreur de charge ferme les connexions dont l'en-tête Origin ne correspond pas, avant même qu'un backend soit sélectionné. Les motifs acceptent des jokers pour le port (par exemple http://127.0.0.1:5555 pour une seule origine ou http://127.0.0.1:* pour accepter n'importe quel port sur cet hôte). Séparez plusieurs origines par des virgules. Définir OriginsAllowed sur une chaîne vide rétablit le comportement permissif par défaut.
EnforceWebSocketVersion et ValidateWebSocketKey renforcent l'upgrade WebSocket lui-même et sont activés par défaut. Lorsque EnforceWebSocketVersion est actif, l'équilibreur de charge répond à un handshake qui demande une version autre que 13 par un HTTP 426 Upgrade Required et un en-tête Sec-WebSocket-Version: 13, au lieu de terminer l'upgrade. Lorsque ValidateWebSocketKey est actif, l'équilibreur de charge rejette par un HTTP 400 Bad Request tout handshake dont la Sec-WebSocket-Key est absente ou n'est pas une valeur base64 de 24 caractères qui se décode en 16 octets, comme l'exige RFC 6455. Les deux vérifications ne s'appliquent qu'au chemin RFC 6455, de sorte que les anciens clients Hixie76 ne sont pas affectés. Ne définissez l'une ou l'autre sur False que si vous devez interopérer avec un client non conforme.
Les mêmes options sont disponibles sur TsgcWebSocketServer, TsgcWebSocketHTTPServer et le serveur http.sys TsgcWebSocketServer_HTTPAPI. Pour borner la taille des messages entrants, voir MaxMessageSize.
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'https://app.example.com';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;