TsgcWebSocketLoadBalancerServer › プロパティ › SecurityOptions
ハンドシェイクの受け入れルールを定義します。許可されるオリジンとRFC 6455ハンドシェイク検証です。
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| 名前 | デフォルト | 説明 |
|---|---|---|
OriginsAllowed | "" | ブラウザーのWebSocketハンドシェイクで受け入れるオリジンのカンマ区切りのホワイトリスト。空の場合はすべてのオリジンを許可します。 |
EnforceWebSocketVersion | True | Sec-WebSocket-Versionが13でないRFC 6455ハンドシェイクを拒否します。 |
ValidateWebSocketKey | True | Sec-WebSocket-Keyが有効な16バイトのbase64ナンスでないRFC 6455ハンドシェイクを拒否します。 |
OriginsAllowedを使用して、ロードバランサーがWebSocketハンドシェイクを受け入れるブラウザーのオリジンをロックダウンします。デフォルトではすべてのオリジンが許可されます。空でない値はホワイトリストを有効にし、ロードバランサーはOriginヘッダーが一致しない接続を、バックエンドが選択される前に閉じます。パターンはポートのワイルドカードを受け付けます(たとえば、単一のオリジンにはhttp://127.0.0.1:5555、そのホスト上の任意のポートを受け入れるにはhttp://127.0.0.1:*)。複数のオリジンはカンマで区切ります。OriginsAllowedを空の文字列に設定すると、許可的なデフォルトが復元されます。
EnforceWebSocketVersionおよびValidateWebSocketKeyはWebSocketアップグレード自体を強化し、デフォルトで有効になっています。EnforceWebSocketVersionが有効な場合、ロードバランサーは13以外のバージョンを要求するハンドシェイクに対して、アップグレードを完了する代わりに、HTTP 426 Upgrade RequiredとSec-WebSocket-Version: 13ヘッダーで応答します。ValidateWebSocketKeyが有効な場合、ロードバランサーは、RFC 6455で要求されるように、Sec-WebSocket-Keyが欠落しているか、16バイトにデコードされる24文字のbase64値でないハンドシェイクをHTTP 400 Bad Requestで拒否します。両方のチェックはRFC 6455のパスにのみ適用されるため、レガシーのHixie76クライアントは影響を受けません。非準拠クライアントと相互運用する必要がある場合にのみ、いずれかをFalseに設定してください。
同じオプションがTsgcWebSocketServer、TsgcWebSocketHTTPServerおよびhttp.sysサーバーTsgcWebSocketServer_HTTPAPIで利用可能です。受信メッセージのサイズを制限するにはMaxMessageSizeを参照してください。
oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'https://app.example.com';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;