TsgcWebSocketHTTPServer › Propiedades › SecurityOptions

SecurityOptions Propiedad

Define reglas de admisión del handshake: orígenes permitidos, validación de handshake RFC 6455 y encabezados de respuesta HSTS.

Sintaxis

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Miembros

NombreObservacionesDescripción
OriginsAllowed""TsgcWebSocketHTTPServer.SecurityOptions
EnforceWebSocketVersionTrueRechaza un handshake RFC 6455 cuyo Sec-WebSocket-Version no sea 13.
ValidateWebSocketKeyTrueRechaza un handshake RFC 6455 cuyo Sec-WebSocket-Key no sea un nonce base64 válido de 16 bytes.
HSTS_Options.EnabledFalseHabilita el encabezado de respuesta Strict-Transport-Security. Ver Observaciones.
HSTS_Options.MaxAge31536000Valor 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.IncludeSubDomainsFalseAñade includeSubDomains al encabezado. Actívelo solo si todos los subdominios se sirven a través de HTTPS.
HSTS_Options.PreloadFalseAñade preload al encabezado. Actívelo solo para dominios enviados a la lista de precarga HSTS de los navegadores.

Observaciones

Use OriginsAllowed para restringir los orígenes desde los que el servidor acepta handshakes de WebSocket. Por defecto se permiten todos los orígenes; cualquier valor no vacío activa una lista de permitidos y el servidor cierra las conexiones cuyo encabezado Origin no coincida. Los patrones aceptan comodines para el puerto (por ejemplo, http://127.0.0.1:5555 para un único origen o http://127.0.0.1:* para aceptar cualquier puerto en ese host). Separe múltiples orígenes con comas. Establecer OriginsAllowed en una cadena vacía restaura el comportamiento permisivo predeterminado.

EnforceWebSocketVersion y ValidateWebSocketKey refuerzan el propio upgrade de WebSocket y están habilitados por defecto. Cuando EnforceWebSocketVersion está activo, el servidor responde a un handshake que solicita una versión distinta de 13 con HTTP 426 Upgrade Required y un encabezado Sec-WebSocket-Version: 13, en lugar de completar el upgrade. Cuando ValidateWebSocketKey está activo, el servidor rechaza con HTTP 400 Bad Request cualquier handshake cuyo Sec-WebSocket-Key falte o no sea un valor base64 de 24 caracteres que decodifique a 16 bytes, como exige RFC 6455. Ambas comprobaciones se aplican solo a la ruta RFC 6455, por lo que los clientes Hixie76 antiguos no se ven afectados. Establezca cualquiera de las dos en False solo si necesita interoperar con un cliente no conforme.

Las mismas opciones están disponibles en TsgcWebSocketServer y el servidor http.sys TsgcWebSocketServer_HTTPAPI. Para limitar el tamaño de los mensajes entrantes, consulte MaxMessageSize.

HSTS_Options controla el encabezado de respuesta Strict-Transport-Security definido por RFC 6797. Cuando Enabled es True, cada respuesta HTTP/1.1 y HTTP/2 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 TsgcHTTPServer; no tiene efecto en TsgcWebSocketServer ni en el servidor http.sys TsgcWebSocketServer_HTTPAPI.

Ejemplo


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;

Volver a Propiedades