TsgcHTTPServer › Propiedades › SecurityOptions
Reglas de admisión del handshake heredadas del motor de servidor compartido; las comprobaciones de handshake solo se aplican a la ruta de actualización a WebSocket y nunca se activan en este componente, pero HSTS_Options sí se aplica aquí (ver Observaciones).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Nombre | Predeterminado | Descripción |
|---|---|---|
OriginsAllowed | "" | Lista blanca de orígenes separados por comas aceptados para los handshakes de WebSocket del navegador. Vacío permite todos los orígenes. |
EnforceWebSocketVersion | True | Rechaza un handshake RFC 6455 cuyo Sec-WebSocket-Version no sea 13. |
ValidateWebSocketKey | True | Rechaza un handshake RFC 6455 cuyo Sec-WebSocket-Key no sea un nonce base64 válido de 16 bytes. |
HSTS_Options.Enabled | False | Habilita el encabezado de respuesta Strict-Transport-Security. Ver Observaciones. |
HSTS_Options.MaxAge | 31536000 | Valor en segundos para la directiva max-age del encabezado (el valor predeterminado es un año). SSL Labs exige al menos 15552000 (seis meses) para obtener una calificación A+. |
HSTS_Options.IncludeSubDomains | False | Añade includeSubDomains al encabezado. Actívelo solo si todos los subdominios se sirven a través de HTTPS. |
HSTS_Options.Preload | False | Añade preload al encabezado. Actívelo solo para dominios enviados a la lista de precarga HSTS de los navegadores. |
SecurityOptions se hereda sin cambios del motor de servidor compartido que también da soporte a TsgcWebSocketHTTPServer, donde OriginsAllowed, EnforceWebSocketVersion y ValidateWebSocketKey controlan el handshake de actualización a WebSocket. TsgcHTTPServer nunca realiza un handshake de WebSocket, por lo que ninguna de estas tres comprobaciones se ejecuta jamás en este componente: cada solicitud se gestiona mediante la ruta HTTP normal (OnCommandGet / OnCommandOther / DocumentRoot). Estos tres miembros permanecen publicados por compatibilidad de interfaz con el motor compartido; déjelos en sus valores predeterminados. Para restringir qué IPs de cliente pueden acceder a un endpoint HTTP, use Firewall o RateLimiter, o inspeccione usted mismo la cabecera Origin dentro de OnBeforeCommand.
HSTS_Options es la excepción: sí se aplica a este componente. Controla el encabezado de respuesta Strict-Transport-Security definido por RFC 6797. Cuando Enabled es True, cada respuesta enviada a través de TLS incluye un encabezado Strict-Transport-Security construido a partir de MaxAge, IncludeSubDomains y Preload, por ejemplo Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. El encabezado nunca se envía por HTTP sin cifrar, se omite si la aplicación ya estableció un encabezado Strict-Transport-Security en la respuesta, y no se añade a las respuestas cuyos encabezados escribe la propia aplicación (streaming). HSTS_Options está disponible únicamente en este componente y en TsgcWebSocketHTTPServer; no tiene efecto en TsgcWebSocketServer ni en el servidor http.sys TsgcWebSocketServer_HTTPAPI.
OriginsAllowed, EnforceWebSocketVersion y ValidateWebSocketKey se muestran por completitud; no tienen efecto observable en TsgcHTTPServer. HSTS_Options.Enabled y HSTS_Options.MaxAge sí tienen efecto: añaden el encabezado Strict-Transport-Security a las respuestas enviadas a través de 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;