TsgcHTTPServer › Propriétés › SecurityOptions
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).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Nom | Par défaut | Description |
|---|---|---|
OriginsAllowed | "" | Liste blanche d'origines séparées par des virgules, acceptées pour les handshakes WebSocket des navigateurs. Vide autorise toutes les origines. |
EnforceWebSocketVersion | True
| Rejette un handshake RFC 6455 dont la Sec-WebSocket-Version n'est pas 13. |
ValidateWebSocketKey | True
| Rejette un handshake RFC 6455 dont la Sec-WebSocket-Key n'est pas un nonce base64 valide de 16 octets. |
HSTS_Options.Enabled | False | Active l'en-tête de réponse Strict-Transport-Security. Voir Remarques. |
HSTS_Options.MaxAge | 31536000 | Valeur 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.IncludeSubDomains | False | Ajoute includeSubDomains à l'en-tête. À activer uniquement si tous les sous-domaines sont servis en HTTPS. |
HSTS_Options.Preload | False | Ajoute preload à l'en-tête. À activer uniquement pour les domaines soumis à la liste de préchargement HSTS des navigateurs. |
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.
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;