TsgcWebSocketHTTPServer › プロパティ › 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およびhttp.sysサーバーTsgcWebSocketServer_HTTPAPIで利用可能です。受信メッセージのサイズを制限するにはMaxMessageSizeを参照してください。
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;