TsgcHTTPServer › Propriétés › SecurityOptions

SecurityOptions Propriété

Règles d'admission du handshake héritées du moteur serveur partagé ; les vérifications de handshake ne s'appliquent qu'au chemin de mise à niveau WebSocket et ne se déclenchent jamais sur ce composant, mais HSTS_Options s'applique ici (voir Remarques).

Syntaxe

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Membres

NomPar défautDescription
OriginsAllowed""Liste blanche d'origines séparées par des virgules, acceptées pour les handshakes WebSocket des navigateurs. Vide autorise toutes les origines.
EnforceWebSocketVersionTrue Rejette un handshake RFC 6455 dont la Sec-WebSocket-Version n'est pas 13.
ValidateWebSocketKeyTrue Rejette un handshake RFC 6455 dont la Sec-WebSocket-Key n'est pas un nonce base64 valide de 16 octets.
HSTS_Options.EnabledFalseActive l'en-tête de réponse Strict-Transport-Security. Voir Remarques.
HSTS_Options.MaxAge31536000Valeur en secondes pour la directive max-age de l'en-tête (la valeur par défaut est un an). SSL Labs exige au moins 15552000 (six mois) pour une note A+.
HSTS_Options.IncludeSubDomainsFalseAjoute includeSubDomains à l'en-tête. À activer uniquement si tous les sous-domaines sont servis en HTTPS.
HSTS_Options.PreloadFalseAjoute preload à l'en-tête. À activer uniquement pour les domaines soumis à la liste de préchargement HSTS des navigateurs.

Remarques

SecurityOptions est hérité sans modification du moteur serveur partagé qui alimente également TsgcWebSocketHTTPServer, où OriginsAllowed, EnforceWebSocketVersion et ValidateWebSocketKey conditionnent le handshake de mise à niveau WebSocket. TsgcHTTPServer n'effectue jamais de handshake WebSocket, donc aucune de ces trois vérifications ne s'exécute jamais sur ce composant : chaque requête est traitée par le chemin HTTP simple (OnCommandGet / OnCommandOther / DocumentRoot). Ces trois membres restent publiés pour la compatibilité d'interface avec le moteur partagé ; laissez-les à leurs valeurs par défaut. Pour restreindre les adresses IP clientes autorisées à atteindre un point de terminaison HTTP, utilisez Firewall ou RateLimiter, ou inspectez vous-même l'en-tête Origin dans OnBeforeCommand.

HSTS_Options fait exception : il s'applique bien à ce composant. Il contrôle l'en-tête de réponse Strict-Transport-Security défini par RFC 6797. Lorsque Enabled est True, chaque réponse envoyée sur TLS inclut un en-tête Strict-Transport-Security construit à partir de MaxAge, IncludeSubDomains et Preload, par exemple Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. L'en-tête n'est jamais envoyé en HTTP simple, il est omis si l'application a déjà défini un en-tête Strict-Transport-Security sur la réponse, et il n'est pas ajouté aux réponses dont l'application écrit elle-même les en-têtes (streaming). HSTS_Options est disponible uniquement sur ce composant et sur TsgcWebSocketHTTPServer ; il n'a aucun effet sur TsgcWebSocketServer ni sur le serveur http.sys TsgcWebSocketServer_HTTPAPI.

Exemple

OriginsAllowed, EnforceWebSocketVersion et ValidateWebSocketKey sont affichés à titre indicatif ; ils n'ont aucun effet observable sur TsgcHTTPServer. HSTS_Options.Enabled et HSTS_Options.MaxAge ont bien un effet : ils ajoutent l'en-tête Strict-Transport-Security aux réponses envoyées sur 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;

Retour aux propriétés