TsgcWebSocketHTTPServer › Propriedades › SecurityOptions

SecurityOptions Property

Define as regras de admissão do handshake: origens permitidas, validação do handshake da RFC 6455 e cabeçalhos de resposta HSTS.

Sintaxe

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Membros

NamePadrãoDescrição
OriginsAllowed""Lista de permissões de origens, separada por vírgulas, aceitas para handshakes WebSocket de navegadores. Vazia permite todas as origens.
EnforceWebSocketVersionTrueRejeita um handshake da RFC 6455 cujo Sec-WebSocket-Version não seja 13.
ValidateWebSocketKeyTrueRejeita um handshake da RFC 6455 cujo Sec-WebSocket-Key não seja um nonce base64 válido de 16 bytes.
HSTS_Options.EnabledFalseHabilita o cabeçalho de resposta Strict-Transport-Security. Consulte Observações.
HSTS_Options.MaxAge31536000Valor em segundos para a diretiva max-age do cabeçalho (o padrão é um ano). O SSL Labs exige pelo menos 15552000 (seis meses) para uma classificação A+.
HSTS_Options.IncludeSubDomainsFalseAdiciona includeSubDomains ao cabeçalho. Habilite somente se todos os subdomínios forem servidos via HTTPS.
HSTS_Options.PreloadFalseAdiciona preload ao cabeçalho. Habilite somente para domínios enviados à lista de pré-carregamento HSTS dos navegadores.

Observações

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 no servidor http.sys TsgcWebSocketServer_HTTPAPI. Para limitar o tamanho das mensagens recebidas, consulte MaxMessageSize.

HSTS_Options controla o cabeçalho de resposta Strict-Transport-Security definido pela RFC 6797. Quando Enabled é True, toda resposta HTTP/1.1 e HTTP/2 enviada via TLS inclui um cabeçalho Strict-Transport-Security construído a partir de MaxAge, IncludeSubDomains e Preload, por exemplo Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. O cabeçalho nunca é enviado via HTTP simples, é ignorado se a aplicação já tiver definido um cabeçalho Strict-Transport-Security na resposta, e não é adicionado a respostas cujos cabeçalhos a aplicação escreve por conta própria (streaming). HSTS_Options está disponível apenas neste componente e em TsgcHTTPServer; não tem efeito em TsgcWebSocketServer nem no servidor http.sys TsgcWebSocketServer_HTTPAPI.

Exemplo


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.SecurityOptions.HSTS_Options.Enabled := true;
oServer.SecurityOptions.HSTS_Options.MaxAge := 31536000;
oServer.Active := true;

Voltar para Propriedades