TsgcHTTPServer › Propriedades › SecurityOptions
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).
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. |
HSTS_Options.Enabled | False | Habilita o cabeçalho de resposta Strict-Transport-Security. Consulte Observações. |
HSTS_Options.MaxAge | 31536000 | Valor 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.IncludeSubDomains | False | Adiciona includeSubDomains ao cabeçalho. Habilite somente se todos os subdomínios forem servidos via HTTPS. |
HSTS_Options.Preload | False | Adiciona preload ao cabeçalho. Habilite somente para domínios enviados à lista de pré-carregamento HSTS dos navegadores. |
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.
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;