Auf dieser Seite

Qt HTTP Server Sicherheitshinweise

Übersicht

Qt HTTP Server bietet verschiedene Konfigurationseinstellungen, die dazu beitragen, eine Anwendung vor Missbrauchsszenarien wie fehlerhaften Anfragen oder unbefugtem Zugriff zu schützen. Mit Qt 6.10 wurden mehrere Sicherheitskonfigurationseinstellungen hinzugefügt. Diese Seite fasst empfohlene Konfigurationen zusammen und erläutert, wann und wie diese zu verwenden sind.

Warnung: SetzenSie „ Qt HTTP Server “ nicht direkt dem Internet aus. „ Qt HTTP Server “ ist nicht gegen netzwerkbasierte Angriffe abgesichert.

Netzwerk-Setups und -Konfigurationen

Hier finden Sie verschiedene Möglichkeiten, ein Netzwerk mit einem „ Qt HTTP Server “ einzurichten.

Kein Internetzugang

Idealerweise sollte überhaupt kein Internetzugang bestehen. Dies ist die sicherste Konfiguration, jedoch benötigen Sie häufig einen Internetzugang. Wenn Qt HTTP Server an localhost oder an einen QLocalServer gebunden ist, akzeptiert es keine Verbindungen aus dem Internet. Sind mehrere Clients mit 127.0.0.1 verbunden, werden die Verbindungen zu den Verbindungen pro Host hinzugezählt, und setMaximumConnectionsPerHost() wird davon beeinflusst. Standardmäßig ist kein Verbindungslimit pro Host festgelegt.

Bindung an QSslServer im Internet

Es ist zwar möglich, aber nicht unterstützt, den „ Qt HTTP Server “ an eine „ QSslServer “ zu binden, die an eine Netzwerkschnittstelle gebunden ist, die über das Internet erreichbar ist. Trotz aller Optionen unter „ QHttpServerConfiguration “ wird diese Konfiguration nicht unterstützt, da „ Qt HTTP Server “ nicht ausreichend abgesichert ist.

Anwendungskonfiguration

Wenn Sie einen Thread-Pool verwenden, stellen Sie sicher, dass dieser nicht so groß ist, dass der Server gleichzeitige, ressourcenintensive eingehende Anfragen nicht bewältigen kann. Obwohl der Aufruf von ` route()` das Parsen der URL in den HTTP-Anfragen vereinfacht, liegt es in der Verantwortung des Entwicklers, die Eingabevalidierung durchzuführen.

Qt HTTP Server Sicherheitskonfiguration

Konfigurieren Sie ` Qt HTTP Server ` über die Klasse ` QHttpServerConfiguration `. Passen Sie die Grenzwerte entsprechend den Möglichkeiten Ihrer Plattform und Ihrer Netzwerkkonfiguration an.

Ratenbegrenzungen

  • Konfigurieren Sie die maximale Anzahl von Anfragen pro Sekunde pro Client-IP mithilfe von ` setRateLimitPerSecond()`. Standardmäßig gibt es keine Ratenbegrenzung. Wenn das Limit überschritten wird, antwortet der Server mit dem Statuscode 429 (Too Many Requests).
  • Konfigurieren Sie die maximale Anzahl gleichzeitiger Verbindungen mithilfe von ` setMaximumConnections()`. Standardmäßig gibt es keine Verbindungsbegrenzung. Wird die Grenze überschritten, antwortet der Server mit dem Statuscode 429 (Too Many Requests) und die Verbindung wird geschlossen.
  • Konfigurieren Sie die maximale Anzahl gleichzeitiger Verbindungen pro Client-IP-Adresse mit „ setMaximumConnectionsPerHost()“. Standardmäßig gibt es keine Begrenzung. Wenn die Begrenzung überschritten wird, antwortet der Server mit dem Statuscode 429 (Too Many Requests) und die Verbindung wird geschlossen.

Verbindungsbeschränkungen

  • Konfigurieren Sie die maximale Leerlaufzeit für Keep-Alive-Verbindungen mithilfe von ` setKeepAliveTimeout()`. Standardmäßig beträgt das Timeout 15 Sekunden.

Whitelist und Blacklist

  • Konfigurieren Sie die Liste der Client-Subnetze, die auf den Server zugreifen dürfen, mit ` setWhitelist()`. Standardmäßig ist die Zulassungsliste leer, und alle Clients sind zugelassen. Ist die Zulassungsliste nicht leer, werden nur Adressen aus dieser Liste akzeptiert. Die Zulassungsliste wird vor der Sperrliste überprüft.
  • Konfigurieren Sie die gesperrten Client-Subnetze mit ` setBlacklist()`. Die Sperrliste wird nur angewendet, wenn die Zulassungsliste leer ist. Standardmäßig ist die Sperrliste leer.

Beschränkungen der Anforderungsgröße

  • Konfigurieren Sie die maximale URL-Größe über ` setMaximumUrlSize()`. Wird die Grenze überschritten, antwortet der Server mit dem HTTP-Statuscode 414 (Request-URI Too Long). Die standardmäßige maximale URL-Größe beträgt 64 KiB.
  • Konfigurieren Sie die maximale Gesamtgröße aller HTTP-Anfrage-Header über setMaximumTotalHeaderSize(). Wird das Limit überschritten, antwortet der Server mit dem HTTP-Statuscode 431 (Request Header Fields Too Large). Die Standardgröße der gesamten Header beträgt 64 KiB.
  • Konfigurieren Sie die maximale Größe eines einzelnen HTTP-Header-Feldes mit setMaximumHeaderFieldSize(). Wird das Limit überschritten, antwortet der Server mit dem HTTP-Statuscode 431 (Request Header Fields Too Large). Die standardmäßige maximale Header-Feldgröße beträgt 48 KiB.
  • Konfigurieren Sie die maximale Anzahl von HTTP-Header-Feldern pro Anfrage mithilfe von ` setMaximumHeaderFieldCount()`. Wird das Limit überschritten, antwortet der Server mit dem HTTP-Statuscode 431 (Request Header Fields Too Large). Die standardmäßige maximale Anzahl von Header-Feldern beträgt 128.
  • Konfigurieren Sie die maximale Größe des Anfragetexts mit ` setMaximumBodySize()`. Wird das Limit überschritten, antwortet der Server mit dem HTTP-Statuscode 413 (Content Too Large). Die standardmäßige maximale Größe des Anfragetexts beträgt 32 MiB.

Hinweis: Verwenden Siestets die neuesten Sicherheitsupdates für Qt und alle abhängigen Bibliotheken.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.