TsgcHTTPServer › Właściwości › SecurityOptions

SecurityOptions Właściwość

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).

Składnia

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Składowe

NazwaDomyślnieOpis
OriginsAllowed""Lista dozwolonych origin (rozdzielona przecinkami) akceptowanych przy uzgadnianiu połączeń WebSocket z przeglądarki. Wartość pusta zezwala na wszystkie origin.
EnforceWebSocketVersionTrueOdrzuca uzgadnianie połączenia RFC 6455, którego Sec-WebSocket-Version nie jest równa 13.
ValidateWebSocketKeyTrueOdrzuca uzgadnianie połączenia RFC 6455, którego Sec-WebSocket-Key nie jest prawidłowym 16-bajtowym wartością nonce w base64.
HSTS_Options.EnabledFalseWłącza nagłówek odpowiedzi Strict-Transport-Security. Zobacz Uwagi.
HSTS_Options.MaxAge31536000Wartość 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.IncludeSubDomainsFalseDodaje includeSubDomains do nagłówka. Włączaj tylko wtedy, gdy każda subdomena jest obsługiwana przez HTTPS.
HSTS_Options.PreloadFalseDodaje preload do nagłówka. Włączaj tylko dla domen zgłoszonych na liście preload HSTS przeglądarek.

Uwagi

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.

Przykład

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;

Wróć do Właściwości