Konfiguration der Webapplikation in jetty-web.xml

Spezifische Konfigurationen für den in der DLE eingebetteten Jetty-Webserver bzw. der dort angebotenen Web-Applikationen können in dieser Datei vorgenommen werden.

Die Datei kann pro Webapplikation im WEB-INF-Verzeichnis mit dem namen jetty-web.xml anglegt werden. 

MaxFormContentSize

In bestimmten Fällen empfieht sich dort die Einstellung der maxFormContentSize. Der Standardwert ist 200000, bei Fehlern wie z.B. "Form is larger than max length[...]" sollte der Wert etwas größer gewählt werden.

Beispielsweise kann der Inhalt so aussehen:

 

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Max Form Size                                                   -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="maxFormContentSize">1000000</Set>
</Configure>

Unterbindung von Stacktraces

Produktivumgebungen sollten, aus Sicherheitsgründen, nach aussen keine internen Informationen über den Aufbau und die Struktur der DLE bzw. der dahinter laufenden Abläufe zulassen. Dies kann mittels folgender Einstellungen in der jetty-web.xml angepasst werden.

Beispielsweise kann der Inhalt so aussehen:

 

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Hide Stack Traces                                                   -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Get name="errorHandler">
<Call name="setShowStacks">
<Arg type="boolean">false</Arg>
</Call>
</Get>
</Configure>

Cookieattribute setzen

Um die Sicherheit einer Webanwendung zu erhöhen empfiehlt es sich Cookies, die nicht über client-seitigen Code angesprochen werden müssen mit dem HTTP-Only Attribut auszustatten.Der Browser verhindert, falls dieses Attribut aktiviert ist, einen Zugriff mit Javascript darauf.

Ein weiteres untersütztes Attribut zur Erhöhung der Sicherheit ist das Secure-Attribut. Dieses findet bei der Nutzung von SSL/TLS-Verbindungen Anwendung. Der Browser wertet dieses Attribut aus und verhindert eine Übertragung des Cookies über unverschlüsselte Verbindungen.

Das Same-Site Attribut wird in der Version < 2.1.1 der DLE bzw. mit Jetty 6 nicht untstützt.

Beispielsweise kann der Inhalt so aussehen:

 

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Set Cookie                                                -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Get name="sessionHandler">
    <Get name="sessionManager">
<Set name="secureCookies" type="boolean">true</Set>
<Set name="httpOnly" type="boolean">true</Set>
</Get>
</Get>
</Configure>

Konfiguration eines Request-Logs

Um eingehende Anfragen für die Webapplikation aufzuzeichnen kann folgende Konfiguration angewandt werden.

 

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Call name="addHandler">
<Arg>
<New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
<Set name="filename"><Property name="jetty.logs" default="./log"/>/web-yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="LogTimeZone">GMT</Set>
<Set name="retainDays">30</Set>
<Set name="append">true</Set>
<Set name="logLatency">true</Set>
</New>
</Set>
</New>
</Arg>
</Call>
</Configure>

DLE Version 2.1.1

Die Konfiguration der jetty-web.xml Datei in Bezug auf die WebAppContext-Klasse muss ab der DLE-Version 2.1.1 angepasst werden. Da die Webserver-Bibliothek (jetty) von Version 6 auf Version 9 gehoben wurde, hat sich der voll-qualifizierte Name der WebAppContext-Klasse geändert und lautet nun:

org.eclipse.jetty.webapp.WebAppContext

DLE Version 2.2.0 und höher

Ab der DLE Version 2.2.0 ist mit Java 21 die Jetty(Webserver)-Version 12.0 im Einsatz. In der jetty-web.xml ändert sich nun der Klassenname der Webapp-Context-Klasse erneut (zum letzen Mal):

at.visionflow.dle.server.webserver.DLEWebAppContextForWebsockets

Außerdem ändert sich auch die Einstellung für Cookie-Same-Sites:

 

 

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="at.visionflow.dle.server.webserver.DLEWebAppContextForWebsockets"> <Get name="sessionHandler"> <Set name="sameSite" > <Call class="org.eclipse.jetty.http.HttpCookie$SameSite" name="from"> <Arg>Strict</Arg> </Call> </Set> <Get name="sessionCookieConfig"> <Set name="secure">true</Set> <Set name="httpOnly">true</Set> </Get> </Get> </Configure>