TsgcWebSocketHTTPServer › 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 restreindre les origines depuis lesquelles le serveur accepte les handshakes WebSocket. Par défaut toutes les origines sont autorisées ; toute valeur non vide active une liste blanche et le serveur ferme les connexions dont l'en-tête Origin ne correspond pas. Les patterns acceptent des caractères génériques 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 restaure la valeur permissive par défaut.
EnforceWebSocketVersion et ValidateWebSocketKey renforcent l'upgrade WebSocket lui-même et sont activés par défaut. Lorsque EnforceWebSocketVersion est actif, le serveur 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, le serveur 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 et le serveur http.sys TsgcWebSocketServer_HTTPAPI. Pour borner la taille des messages entrants, voir MaxMessageSize.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;