TsgcHTTPServer › 속성 › SecurityOptions
공유 서버 엔진으로부터 상속된 핸드셰이크 허용 규칙입니다. 핸드셰이크 검사는 WebSocket 업그레이드 경로에만 적용되며 이 구성 요소에서는 절대 발생하지 않지만, HSTS_Options는 여기에도 적용됩니다(설명 참조).
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| Name | Default | 설명 |
|---|---|---|
OriginsAllowed | "" | 브라우저 WebSocket 핸드셰이크에 대해 허용되는 오리진의 쉼표로 구분된 화이트리스트입니다. 비어 있으면 모든 오리진을 허용합니다. |
EnforceWebSocketVersion | True | Sec-WebSocket-Version이 13이 아닌 RFC 6455 핸드셰이크를 거부합니다. |
ValidateWebSocketKey | True | Sec-WebSocket-Key가 유효한 16바이트 base64 nonce가 아닌 RFC 6455 핸드셰이크를 거부합니다. |
HSTS_Options.Enabled | False | Strict-Transport-Security 응답 헤더를 활성화합니다. 설명을 참조하십시오. |
HSTS_Options.MaxAge | 31536000 | 헤더의 max-age 지시자 값(초 단위, 기본값은 1년)입니다. SSL Labs에서 A+ 등급을 받으려면 최소 15552000(6개월)이 필요합니다. |
HSTS_Options.IncludeSubDomains | False | 헤더에 includeSubDomains를 추가합니다. 모든 서브도메인이 HTTPS로 제공되는 경우에만 활성화하십시오. |
HSTS_Options.Preload | False | 헤더에 preload를 추가합니다. 브라우저의 HSTS 프리로드 목록에 제출된 도메인에 대해서만 활성화하십시오. |
SecurityOptions는 TsgcWebSocketHTTPServer에도 사용되는 공유 서버 엔진에서 변경 없이 상속된 속성이며, 그곳에서는 OriginsAllowed, EnforceWebSocketVersion, ValidateWebSocketKey가 WebSocket 업그레이드 핸드셰이크를 통제합니다. TsgcHTTPServer는 WebSocket 핸드셰이크를 절대 수행하지 않으므로, 이 세 가지 검사 중 어느 것도 이 구성 요소에서는 실행되지 않습니다. 모든 요청은 일반 HTTP 경로(OnCommandGet / OnCommandOther / DocumentRoot)로 처리됩니다. 이 세 멤버는 공유 엔진과의 인터페이스 호환성을 위해 published 상태로 남아 있으므로, 기본값 그대로 두십시오. 어떤 클라이언트 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;