TsgcWebSocketProxyServer › プロパティ › SecurityOptions

SecurityOptions プロパティ

ハンドシェイクの受け入れルールを定義します。許可されるオリジンとRFC 6455ハンドシェイク検証です。

構文

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Members

名前デフォルト説明
OriginsAllowed""ブラウザーのWebSocketハンドシェイクで受け入れるオリジンのカンマ区切りのホワイトリスト。空の場合はすべてのオリジンを許可します。
EnforceWebSocketVersionTrueSec-WebSocket-Versionが13でないRFC 6455ハンドシェイクを拒否します。
ValidateWebSocketKeyTrueSec-WebSocket-Keyが有効な16バイトのbase64ナンスでないRFC 6455ハンドシェイクを拒否します。

解説

OriginsAllowedを使用すると、Proxyで定義されたアップストリームサーバーへトラフィックが転送される前に、プロキシが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を参照してください。

使用例


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;

プロパティに戻る