TsgcWebSocketHTTPServer › Właściwości › SecurityOptions
Definiuje reguły dopuszczania uzgadniania połączeń: dozwolone origin, walidację uzgadniania połączeń RFC 6455 oraz nagłówki odpowiedzi HSTS.
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. |
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.
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;