TsgcWebSocketServer_HTTPAPIEigenschaften › MaxMessageSize

MaxMessageSize Eigenschaft

Maximale Größe einer eingehenden WebSocket-Nachricht in Bytes; schützt den Server vor Speichererschöpfungsangriffen.

Syntax

property MaxMessageSize: Int64 read FMaxMessageSize write FMaxMessageSize;

Standardwert

67108864 (64 MB). Verwenden Sie 0 für unbegrenzt.

Hinweise

Dieser Server läuft auf der Windows HTTP Server API (http.sys). Eine WebSocket-Nachricht hat keine inhärente Größenbeschränkung, sodass ein böswilliger Client auf mehrere Arten versuchen kann, den Serverspeicher zu erschöpfen: indem er eine riesige Frame-Länge deklariert, eine fragmentierte Nachricht niemals abschließt (ein endloser Strom von Continuation-Frames) oder einen kleinen per-message-deflate-Frame sendet, der sich auf Gigabytes aufbläht (eine „Dekomprimierungsbombe“). MaxMessageSize begrenzt alle drei: Der Server weist einen Frame ab, dessen deklarierte Länge das Limit überschreitet, begrenzt die Gesamtgröße einer wieder zusammengesetzten fragmentierten Nachricht und bricht die Dekomprimierung ab, sobald die entpackte Ausgabe das Limit erreicht. Wird das Limit überschritten, wird die Verbindung mit dem WebSocket-Close-Code 1009 (Message Too Big) geschlossen.

Der Standardwert von 64 MB ist für die überwiegende Mehrheit der Anwendungen sicher. Erhöhen Sie ihn, wenn Ihre Anwendung berechtigterweise größere Nachrichten austauscht, oder verringern Sie ihn, um die Speichergrenze auf einem öffentlich erreichbaren Server enger zu fassen. Der Wert 0 deaktiviert das Limit (für aus nicht vertrauenswürdigen Netzwerken erreichbare Server nicht empfohlen). Unabhängig von diesem Wert wird eine 64-Bit-Frame-Länge mit gesetztem höchstwertigen Bit immer als Protokollfehler abgewiesen, sodass das Limit nicht durch einen Integer-Überlauf umgangen werden kann.

Dieselbe Eigenschaft ist bei TsgcWebSocketServer und TsgcWebSocketHTTPServer verfügbar. Für die Begrenzung der Verbindungs- und Nachrichtenrate kombinieren Sie sie mit RateLimiter und Firewall.

Beispiel


oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
oServer.Port := 80;
// accept messages up to 16 MB, close 1009 on anything larger
oServer.MaxMessageSize := 16 * 1024 * 1024;
oServer.Active := true;

Zurück zu Properties