TsgcWebSocketServer_HTTPAPI › 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. |
Utilize OriginsAllowed para restringir de quais origins o servidor aceita handshakes WebSocket. Por padrão, todas as origins são permitidas; qualquer valor não vazio habilita uma whitelist e o servidor fecha as conexões cujo cabeçalho Origin não corresponda. Os padrões aceitam wildcards para a porta (por exemplo http://127.0.0.1:5555 para uma única origin ou http://127.0.0.1:* para aceitar qualquer porta naquele host). Separe múltiplas origins 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 servidor 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 servidor 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 e TsgcWebSocketHTTPServer. Para limitar o tamanho das mensagens recebidas, consulte MaxMessageSize.
oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;