TsgcHTTPServer › Propriedades › SecurityOptions

SecurityOptions Property

Regras de admissão do handshake herdadas do mecanismo de servidor compartilhado; as verificações de handshake se aplicam apenas ao caminho de upgrade do WebSocket e nunca são acionadas neste componente, mas HSTS_Options se aplica aqui (veja Observações).

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

SecurityOptions é herdada sem alterações do mecanismo de servidor compartilhado que também alimenta TsgcWebSocketHTTPServer, onde OriginsAllowed, EnforceWebSocketVersion e ValidateWebSocketKey definem as regras de admissão do handshake de upgrade WebSocket. O TsgcHTTPServer nunca realiza um handshake WebSocket, portanto nenhuma dessas três verificações é executada neste componente: toda requisição é tratada pelo caminho HTTP simples (OnCommandGet / OnCommandOther / DocumentRoot). Esses três membros permanecem publicados para compatibilidade de interface com o mecanismo compartilhado; deixe-os nos valores padrão. Para restringir quais IPs de cliente podem acessar um endpoint HTTP, utilize Firewall ou RateLimiter, ou inspecione você mesmo o cabeçalho Origin dentro de OnBeforeCommand.

HSTS_Options é a exceção: ela se aplica a este componente. Controla o cabeçalho de resposta Strict-Transport-Security definido pela RFC 6797. Quando Enabled é True, toda resposta 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 TsgcWebSocketHTTPServer; não tem efeito em TsgcWebSocketServer nem no servidor http.sys TsgcWebSocketServer_HTTPAPI.

Exemplo

OriginsAllowed, EnforceWebSocketVersion e ValidateWebSocketKey são mostrados por completude; não têm efeito observável no TsgcHTTPServer. HSTS_Options.Enabled e HSTS_Options.MaxAge têm efeito, pois adicionam o cabeçalho Strict-Transport-Security às respostas enviadas via TLS.


oServer := TsgcHTTPServer.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