TsgcWebSocketLoadBalancerServer › Propriedades › SecurityOptions
Define as regras de admissão do handshake: origens permitidas e validação do handshake da RFC 6455.
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Name | Padrão | Descrição |
|---|---|---|
OriginsAllowed | "" | Lista de permissões de origens, separada por vírgulas, aceitas para handshakes WebSocket de navegadores. Vazia permite todas as origens. |
EnforceWebSocketVersion | True | Rejeita um handshake da RFC 6455 cujo Sec-WebSocket-Version não seja 13. |
ValidateWebSocketKey | True | Rejeita um handshake da RFC 6455 cujo Sec-WebSocket-Key não seja um nonce base64 válido de 16 bytes. |
Use OriginsAllowed para restringir de quais origens de navegador o balanceador de carga aceita handshakes WebSocket. Por padrão, todas as origens são permitidas; qualquer valor não vazio habilita uma lista de permissões e o balanceador de carga fecha as conexões cujo cabeçalho Origin não corresponda, antes mesmo de um backend ser selecionado. Os padrões aceitam curingas para a porta (por exemplo http://127.0.0.1:5555 para uma única origem ou http://127.0.0.1:* para aceitar qualquer porta naquele host). Separe múltiplas origens com vírgulas. Definir OriginsAllowed como uma string vazia restaura o padrão permissivo.
EnforceWebSocketVersion e ValidateWebSocketKey reforçam o próprio upgrade WebSocket e estão habilitados por padrão. Quando EnforceWebSocketVersion está ativo, o balanceador de carga responde a um handshake que solicita uma versão diferente de 13 com HTTP 426 Upgrade Required e um cabeçalho Sec-WebSocket-Version: 13, em vez de concluir o upgrade. Quando ValidateWebSocketKey está ativo, o balanceador de carga rejeita com HTTP 400 Bad Request qualquer handshake cujo Sec-WebSocket-Key esteja ausente ou não seja um valor base64 de 24 caracteres que decodifique para 16 bytes, conforme exigido pela RFC 6455. Ambas as verificações se aplicam apenas ao caminho da RFC 6455, portanto clientes Hixie76 legados não são afetados. Defina qualquer um deles como False apenas se você precisar interoperar com um cliente não conforme.
As mesmas opções estão disponíveis em TsgcWebSocketServer, TsgcWebSocketHTTPServer e no servidor http.sys TsgcWebSocketServer_HTTPAPI. Para limitar o tamanho das mensagens recebidas, consulte MaxMessageSize.
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'https://app.example.com';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;