TsgcHTTPServer › Właściwości › SecurityOptions
Reguły dopuszczania uzgadniania połączenia odziedziczone ze współdzielonego silnika serwera; kontrole uzgadniania połączenia dotyczą wyłącznie ścieżki uaktualnienia WebSocket i nigdy nie są wyzwalane w tym komponencie, jednak HSTS_Options ma tu zastosowanie (patrz Uwagi).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Nazwa | Domyślnie | Opis |
|---|---|---|
OriginsAllowed | "" | Lista dozwolonych origin (rozdzielona przecinkami) akceptowanych przy uzgadnianiu połączeń WebSocket z przeglądarki. Wartość pusta zezwala na wszystkie origin. |
EnforceWebSocketVersion | True | Odrzuca uzgadnianie połączenia RFC 6455, którego Sec-WebSocket-Version nie jest równa 13. |
ValidateWebSocketKey | True | Odrzuca uzgadnianie połączenia RFC 6455, którego Sec-WebSocket-Key nie jest prawidłowym 16-bajtowym wartością nonce w base64. |
HSTS_Options.Enabled | False | Włącza nagłówek odpowiedzi Strict-Transport-Security. Zobacz Uwagi. |
HSTS_Options.MaxAge | 31536000 | Wartość w sekundach dla dyrektywy max-age nagłówka (domyślnie jeden rok). SSL Labs wymaga co najmniej 15552000 (sześć miesięcy), aby uzyskać ocenę A+. |
HSTS_Options.IncludeSubDomains | False | Dodaje includeSubDomains do nagłówka. Włączaj tylko wtedy, gdy każda subdomena jest obsługiwana przez HTTPS. |
HSTS_Options.Preload | False | Dodaje preload do nagłówka. Włączaj tylko dla domen zgłoszonych na liście preload HSTS przeglądarek. |
SecurityOptions jest odziedziczone bez zmian ze współdzielonego silnika serwera, który zasila również TsgcWebSocketHTTPServer, gdzie OriginsAllowed, EnforceWebSocketVersion i ValidateWebSocketKey kontrolują dopuszczenie uzgadniania uaktualnienia WebSocket. TsgcHTTPServer nigdy nie wykonuje uzgadniania WebSocket, więc żadna z tych trzech kontroli nigdy nie jest uruchamiana w tym komponencie: każde żądanie jest obsługiwane przez zwykłą ścieżkę HTTP (OnCommandGet / OnCommandOther / DocumentRoot). Te trzy składowe pozostają opublikowane dla zgodności interfejsu ze współdzielonym silnikiem; pozostaw je na wartościach domyślnych. Aby ograniczyć, które adresy IP klientów mogą łączyć się z punktem końcowym HTTP, użyj Firewall lub RateLimiter, albo samodzielnie sprawdź nagłówek Origin wewnątrz OnBeforeCommand.
HSTS_Options jest wyjątkiem: ma zastosowanie w tym komponencie. Kontroluje nagłówek odpowiedzi Strict-Transport-Security zdefiniowany w RFC 6797. Gdy Enabled ma wartość True, każda odpowiedź wysyłana przez TLS zawiera nagłówek Strict-Transport-Security zbudowany z MaxAge, IncludeSubDomains i Preload, na przykład Strict-Transport-Security: max-age=31536000; includeSubDomains; preload. Nagłówek nigdy nie jest wysyłany przez zwykłe HTTP, jest pomijany, jeśli aplikacja już ustawiła nagłówek Strict-Transport-Security w odpowiedzi, i nie jest dodawany do odpowiedzi, których nagłówki aplikacja zapisuje samodzielnie (przesyłanie strumieniowe). HSTS_Options jest dostępne w tym komponencie oraz w TsgcWebSocketHTTPServer; nie ma wpływu na TsgcWebSocketServer ani na serwer http.sys TsgcWebSocketServer_HTTPAPI.
OriginsAllowed, EnforceWebSocketVersion i ValidateWebSocketKey są pokazane dla kompletności; nie mają zauważalnego wpływu na TsgcHTTPServer. HSTS_Options.Enabled i HSTS_Options.MaxAge mają wpływ: dodają nagłówek Strict-Transport-Security do odpowiedzi wysyłanych przez 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;