TsgcWebSocketHTTPServer › Właściwości › SecurityOptions

SecurityOptions Właściwość

Definiuje reguły dopuszczania uzgadniania połączeń: dozwolone origin, walidację uzgadniania połączeń RFC 6455 oraz nagłówki odpowiedzi HSTS.

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

Należy użyć właściwości OriginsAllowed, aby ograniczyć originy, z których serwer akceptuje uzgadnianie WebSocket. Domyślnie akceptowane są wszystkie originy; podanie dowolnej niepustej wartości włącza białą listę i serwer zamyka połączenia, których nagłówek Origin nie pasuje. Wzorce akceptują symbole wieloznaczne dla portu (np. http://127.0.0.1:5555 dla jednego originu lub http://127.0.0.1:* dla dowolnego portu na tym hoście). Wiele originów należy oddzielać przecinkami. Ustawienie OriginsAllowed na pusty ciąg przywraca domyślne, otwarte zachowanie.

EnforceWebSocketVersion i ValidateWebSocketKey wzmacniają samo przejście (upgrade) do WebSocket i są domyślnie włączone. Gdy EnforceWebSocketVersion jest aktywne, serwer odpowiada na uzgadnianie połączenia żądające wersji innej niż 13 statusem HTTP 426 Upgrade Required i nagłówkiem Sec-WebSocket-Version: 13, zamiast zakończyć upgrade. Gdy ValidateWebSocketKey jest aktywne, serwer odrzuca statusem HTTP 400 Bad Request każde uzgadnianie połączenia, którego Sec-WebSocket-Key jest brakujący lub nie jest 24-znakową wartością base64 dekodującą się do 16 bajtów, zgodnie z wymaganiami RFC 6455. Obie kontrole dotyczą wyłącznie ścieżki RFC 6455, więc starsi klienci Hixie76 nie są nimi objęci. Ustaw którąkolwiek na False tylko wtedy, gdy musisz zachować współdziałanie z niezgodnym klientem.

Te same opcje są dostępne w TsgcWebSocketServer oraz w serwerze http.sys TsgcWebSocketServer_HTTPAPI. Aby ograniczyć rozmiar przychodzących wiadomości, zobacz MaxMessageSize.

HSTS_Options kontroluje nagłówek odpowiedzi Strict-Transport-Security zdefiniowany w RFC 6797. Gdy Enabled ma wartość True, każda odpowiedź HTTP/1.1 i HTTP/2 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 TsgcHTTPServer; nie ma wpływu na TsgcWebSocketServer ani na serwer http.sys TsgcWebSocketServer_HTTPAPI.

Przykład


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;

Wróć do Właściwości