Typo3 Security Headers

HTTP Strict Transport Security (HSTS)

Mit der HTTP Strict Transport Security Linie wird dem Browser beim ersten Aufruf einer Domain mitgeteilt, dass alle künftigen Aufrufe ausschließlich über eine verschlüsselte Verbindung (https) erfolgen sollen. Diese Festlegung kann auch auf alle Subdomains ausgeweitet werden.

Der Browser merkt sich diese Einstellungen für alle künftigen Aufrufe innerhalb des festgelegten Zeitraums und verweigert den Aufruf über unverschlüsselte Verbindungen (http://).

Voraussetzung zur Nutzung von HSTS ist, dass für die Domain ein gültiges SSL-Zertifikat existiert. Wird die Festlegung auf Subdomains erweitert, so muss geprüft werden, ob entweder ein Wildcard-SSL Zertifikat für die Domain vorhanden ist oder alternativ alle genutzten Subdomains ebenfalls über ein SSL-Zertifikat verfügen.

Syntax des HTTP Strict Transport Security Headers nur für eine Domain:

strict-transport-security:max-age=31536000

Der Parameter max-age legt fest, wie lange diese Regel gültig sein soll (in Sekunden), empfohlen ist ein Wert von einem Jahr (31536000 Sekunden).

Sollen auch alle Subdomains mit der Regel eingeschlossen werden, so lautet der Header:

strict-transport-security:max-age=31536000; includeSubdomains

X-Frame-Options

Mit dem Header X-Frame-Options kann festgelegt werden, ob die eigene Webseite in Frames eingebunden werden darf. Wenn man im Browser verhindert, dass eine Seite auch per Frame geladen werden darf, kann man Angriffe über sog. Clickjacking verhindern.

Mögliche Parameter sind:

DENY: das Einbinden der Seite per Frame ist generell nicht möglich

SAMEORIGIN: das Einbinden ist nur von der eigenen Domain aus erlaubt

ALLOW-FROM example.com

: es können explizit Webseiten angegeben werden, denen man das Einbinden per Frame erlaubt Für TYPO3 Webseiten empfiehlt sich die Nutzung von SAMEORIGIN:

X-Frame-Options:SAMEORIGIN

X-Xss-Protection

Aktuelle Browser haben einen eingebauten Schutz gegen Reflective XSS Angriffe. Dieser Schutz kann mit dem X-Xss-Protection Header ein- und ausgeschaltet werden. Mit dem optionalen Parameter mode=block wird der Angriff blockiert statt nur gefiltert. Empfohlene Einstellung:

X-Xss-Protection: 1; mode=block

Referrer-Policy

Mit dem Referrer-Policy Header kann konfiguriert werden, ob und wie der Referrer bei ausgehenden Links von der Webseite übergeben wird. Dieser Header ist relativ neu und wird seit Anfang 2017 unterstützt.

Es gibt folgende Konfigurationsmöglichkeiten:

no-referrer: es wird kein Referrer mitgegeben

no-referrer-when-downgrade: bei einem Wechsel von einer https- auf eine http Seite (verschlüsselt auf unverschlüsselt) wird kein Referrer mitgegeben. Bei Links von unverschlüsselten Seiten (http) wird der Referrer erzeugt.

same-origin: bei einer Verlinkung innerhalb einer Webseite wird der Referrer erzeugt, bei Links auf externe Webseiten dagegen nicht.

origin: der Referrer wird immer erzeugt und gibt die Quell-Domain an, der Pfad wird jedoch entfernt.

strict-origin: wie origin, aber die Quell-Domain wird nur angegeben, wenn das Zeil eine Webseite mit Verschlüsselung ist (https)

origin-when-cross-origin: innerhalb der gleichen Domain wird der Pfad im Refferer mit aufgeführt, bei Verlinkung auf andere Domains nur der Domainname ohne Pfad.

strict-origin-when-cross-origin: wie zuvor, jedoch wird bei einem Downgrade von verschlüsselter auf unverschlüsselte Verbindung keine Referrer Information mitgeschickt.

unsafe-url: der Referrer wird in jedem Fall mitgeschickt, auch bei Verlinkung von verschlüsselter auf unverschlüsselte Verbindung. Diese Option wird nicht empfohlen (daher schon der Name "unsafe")

Empfehlung: Sofern ein SSL Zertifikat für die Domain ausgestellt ist, wird die Option strict-origin empfohlen, ansonsten die Option origin.

Referrer-Policy:strict-origin

Content Security Policy

Mit der Content Security Policy kann man genau festlegen, welche Inhalte woher vom Browser auf der Webseite geladen werden dürfen. Hier ist leider keine Empfehlung für einen Standard Eintrag möglich, da die Angaben individuell vom Inhalt der Webseite abhängen.

Detaillierte Informationen dazu gibt es auf der Webseite von Scott Helme.

Es wird dringend empfohlen, die Policy zunächst mit der Anweisung "Content-Security-Policy-Report-Only" zu testen, bevor die Policy live geschaltet wird. Die Ausgabe beim Testen erfolgt z.B. in der Konsole des Chrome Browsers.

Hier ein Beispiel, wie die Konfiguration bei der jweiland.net Webseite aussieht:

Content-Security-Policy: default-src 'unsafe-inline' 'unsafe-eval';
script-src 'unsafe-inline' 'unsafe-eval' https://jweiland.net https://stat.jweiland.net https://www.googletagmanager.com https://www.google-analytics.com; font-src 'self';
style-src 'unsafe-inline' https://jweiland.net/;
img-src 'self' https://www.google-analytics.com/ https://stats.g.doubleclick.net/ https://stat.jweiland.net;
frame-src https://player.vimeo.com/;
connect-src https://jweiland.net/

TypoScript Beispielkonfiguration

config.additionalHeaders {
10.header = strict-transport-security:max-age=31536000
20.header = X-Frame-Options:SAMEORIGIN
30.header = X-Xss-Protection: 1; mode=block
40.header = X-Content-Type-Options: nosniff
50.header = Referrer-Policy:strict-origin
}

results matching ""

    No results matching ""