TsgcHTTPServer › プロパティ › SecurityOptions

SecurityOptions プロパティ

共有サーバーエンジンから継承されたハンドシェイク受け入れルールです。ハンドシェイクチェックは WebSocket アップグレードパスにのみ適用され、このコンポーネントでは発生しませんが、HSTS_Options はここでも適用されます(解説を参照)。

構文

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

Members

名前デフォルト説明
OriginsAllowed""ブラウザーのWebSocketハンドシェイクで受け入れるオリジンのカンマ区切りのホワイトリスト。空の場合はすべてのオリジンを許可します。
EnforceWebSocketVersionTrueSec-WebSocket-Versionが13でないRFC 6455ハンドシェイクを拒否します。
ValidateWebSocketKeyTrueSec-WebSocket-Keyが有効な16バイトのbase64ナンスでないRFC 6455ハンドシェイクを拒否します。
HSTS_Options.EnabledFalseStrict-Transport-Securityレスポンスヘッダーを有効にします。解説を参照してください。
HSTS_Options.MaxAge31536000ヘッダーのmax-ageディレクティブの値(秒単位、デフォルトは1年)です。SSL LabsでA+評価を得るには、少なくとも15552000(6か月)が必要です。
HSTS_Options.IncludeSubDomainsFalseヘッダーにincludeSubDomainsを追加します。すべてのサブドメインがHTTPSで提供されている場合にのみ有効にしてください。
HSTS_Options.PreloadFalseヘッダーにpreloadを追加します。ブラウザーのHSTSプリロードリストに登録済みのドメインでのみ有効にしてください。

解説

SecurityOptions は、TsgcWebSocketHTTPServer も利用する共有サーバーエンジンからそのまま継承されたプロパティで、そちらでは OriginsAllowed、EnforceWebSocketVersion、ValidateWebSocketKey が WebSocket アップグレードハンドシェイクを制御します。TsgcHTTPServer は WebSocket ハンドシェイクを一切行わないため、これら 3 つのチェックはこのコンポーネント上では実行されません。すべてのリクエストはプレーンな HTTP パス(OnCommandGet / OnCommandOther / DocumentRoot)で処理されます。これら 3 つのメンバーは共有エンジンとのインターフェース互換性のために公開されたままになっているので、既定値のままにしてください。特定のクライアント IP のみに HTTP エンドポイントへのアクセスを制限したい場合は Firewall または RateLimiter を使用するか、OnBeforeCommand 内で Origin ヘッダーを自分で検査してください。

HSTS_Options は例外で、このコンポーネントにも適用されます。RFC 6797 で定義されている Strict-Transport-Security レスポンスヘッダーを制御します。Enabled が True の場合、TLS 経由で送信されるすべてのレスポンスに、MaxAge、IncludeSubDomains、Preload から構築された Strict-Transport-Security ヘッダーが含まれます(例: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload)。このヘッダーはプレーンな HTTP では送信されず、アプリケーションがレスポンスにすでに Strict-Transport-Security ヘッダーを設定している場合はスキップされ、アプリケーションが自身でヘッダーを書き込むレスポンス(ストリーミング)には追加されません。HSTS_Options はこのコンポーネントと TsgcWebSocketHTTPServer でのみ利用可能で、TsgcWebSocketServer や http.sys サーバー TsgcWebSocketServer_HTTPAPI には効果がありません。

使用例

OriginsAllowed、EnforceWebSocketVersion、ValidateWebSocketKey は完全性のために示していますが、TsgcHTTPServer には観測可能な効果はありません。HSTS_Options.Enabled と HSTS_Options.MaxAge には効果があり、TLS 経由で送信されるレスポンスに Strict-Transport-Security ヘッダーを追加します。


oServer := TsgcHTTPServer.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;

プロパティに戻る