TsgcHTTPServer › 속성 › SecurityOptions

SecurityOptions 속성

공유 서버 엔진으로부터 상속된 핸드셰이크 허용 규칙입니다. 핸드셰이크 검사는 WebSocket 업그레이드 경로에만 적용되며 이 구성 요소에서는 절대 발생하지 않지만, HSTS_Options는 여기에도 적용됩니다(설명 참조).

구문

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

멤버

NameDefault설명
OriginsAllowed""브라우저 WebSocket 핸드셰이크에 대해 허용되는 오리진의 쉼표로 구분된 화이트리스트입니다. 비어 있으면 모든 오리진을 허용합니다.
EnforceWebSocketVersionTrueSec-WebSocket-Version이 13이 아닌 RFC 6455 핸드셰이크를 거부합니다.
ValidateWebSocketKeyTrueSec-WebSocket-Key가 유효한 16바이트 base64 nonce가 아닌 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 핸드셰이크를 절대 수행하지 않으므로, 이 세 가지 검사 중 어느 것도 이 구성 요소에서는 실행되지 않습니다. 모든 요청은 일반 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;

속성으로 돌아가기