TsgcWebSocketProxyServer › Właściwości › SecurityOptions

SecurityOptions Właściwość

Definiuje reguły dopuszczania uzgadniania połączeń: dozwolone origin oraz walidację uzgadniania połączeń RFC 6455.

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.

Uwagi

Należy użyć OriginsAllowed, aby ograniczyć, z których źródeł proxy akceptuje uzgadnianie WebSocket przed przekazaniem ruchu do serwera nadrzędnego zdefiniowanego w Proxy. Domyślnie dozwolone są wszystkie źródła; dowolna niepusta wartość włącza listę dozwolonych i proxy zamyka połączenia, których nagłówek Origin nie pasuje. Wzorce obsługują symbole wieloznaczne dla portu (np. http://127.0.0.1:5555 dla jednego źródła lub http://127.0.0.1:* dla akceptowania dowolnego portu na tym hoście). Wiele źródeł należy rozdzielić przecinkami. Ustawienie OriginsAllowed na pusty ciąg przywraca domyślne zachowanie dopuszczające wszystkich.

EnforceWebSocketVersion i ValidateWebSocketKey wzmacniają samo przejście (upgrade) do WebSocket i są domyślnie włączone. Gdy EnforceWebSocketVersion jest aktywne, proxy 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, proxy 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, TsgcWebSocketHTTPServer oraz w serwerze http.sys TsgcWebSocketServer_HTTPAPI. Aby ograniczyć rozmiar przychodzących wiadomości, zobacz MaxMessageSize.

Przykład


oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oProxy.SecurityOptions.EnforceWebSocketVersion := true;
oProxy.SecurityOptions.ValidateWebSocketKey := true;
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 8080;
oProxy.Active := true;

Wróć do Właściwości