TsgcWebSocketServer_HTTPAPI › 속성 › MaxMessageSize
인바운드 WebSocket 메시지의 최대 크기(바이트)이며, 메모리 고갈 공격으로부터 서버를 보호합니다.
__property __int64 MaxMessageSize;
67108864(64 MB). 무제한으로 하려면 0을 사용하십시오.
이 서버는 Windows HTTP Server API(http.sys)에서 실행됩니다. WebSocket 메시지에는 본질적인 크기 제한이 없으므로, 악의적인 클라이언트는 여러 방법으로 서버 메모리를 고갈시키려고 시도할 수 있습니다. 즉, 거대한 프레임 길이를 선언하거나, 분할된 메시지를 절대 완료하지 않거나(끝없는 연속 프레임 스트림), 기가바이트로 부풀려지는 작은 per-message-deflate 프레임을 보내는 것입니다("압축 해제 폭탄"). MaxMessageSize는 이 세 가지를 모두 제한합니다. 서버는 선언된 길이가 제한을 초과하는 프레임을 거부하고, 재조립된 분할 메시지의 전체 크기를 제한하며, 부풀려진 출력이 제한에 도달하면 압축 해제를 중단합니다. 제한을 초과하면 WebSocket 종료 코드 1009(Message Too Big)로 연결이 닫힙니다.
기본값 64 MB는 대부분의 애플리케이션에 안전합니다. 애플리케이션이 더 큰 메시지를 정당하게 교환하는 경우 값을 높이거나, 외부에 노출된 서버에서 메모리 제한을 강화하려면 값을 낮추십시오. 0 값은 제한을 비활성화합니다(신뢰할 수 없는 네트워크에서 접근 가능한 서버에는 권장되지 않음). 이 값과 무관하게, 최상위 비트가 설정된 64비트 프레임 길이는 항상 프로토콜 오류로 거부되므로 정수 오버플로로 제한을 우회할 수 없습니다.
동일한 속성을 TsgcWebSocketServer 및 TsgcWebSocketHTTPServer에서 사용할 수 있습니다. 연결 속도 및 메시지 속도 제한을 위해서는 RateLimiter 및 Firewall와 함께 사용하십시오.
oServer = new TsgcWebSocketServer_HTTPAPI();
oServer->Port = 80;
oServer->MaxMessageSize = (__int64)16 * 1024 * 1024;
oServer->Active = true;