HTTP-Konfiguration
Übersicht der Konfigurationsoptionen für Nette HTTP.
Wenn Sie nicht das gesamte Framework, sondern nur diese Bibliothek verwenden, lesen Sie, wie die Konfiguration geladen wird.
HTTP-Header
http:
# Header, die mit jeder Anfrage gesendet werden
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# beeinflusst den X-Frame-Options Header
frames: ... # (string|bool) Standard ist 'SAMEORIGIN'
Das Framework sendet aus Sicherheitsgründen den Header X-Frame-Options: SAMEORIGIN
, der besagt, dass die Seite
nur dann innerhalb einer anderen Seite (im <iframe>
-Element) angezeigt werden kann, wenn sie sich auf derselben
Domain befindet. Dies kann in einigen Situationen unerwünscht sein (z. B. wenn Sie eine Anwendung für Facebook entwickeln), das
Verhalten kann daher durch Setzen von frames: http://allowed-host.com
oder frames: true
geändert
werden.
Content Security Policy
Die Header Content-Security-Policy
(im Folgenden CSP) können einfach zusammengestellt werden, ihre Beschreibung
finden Sie in der CSP-Beschreibung. CSP-Direktiven (wie z. B.
script-src
) können entweder als Strings gemäß der Spezifikation oder als Arrays von Werten zur besseren Lesbarkeit
geschrieben werden. Dann ist es nicht notwendig, Schlüsselwörter wie 'self'
in Anführungszeichen zu setzen. Nette
generiert auch automatisch den nonce
-Wert, sodass im Header zum Beispiel 'nonce-y4PopTLM=='
steht.
http:
# Content Security Policy
csp:
# String im Format gemäß der CSP-Spezifikation
default-src: "'self' https://example.com"
# Array von Werten
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool im Falle von Schaltern
upgrade-insecure-requests: true
block-all-mixed-content: false
Verwenden Sie in Templates <script n:nonce>...</script>
und der Nonce-Wert wird automatisch ergänzt.
Sichere Websites in Nette zu erstellen ist wirklich einfach.
Ähnlich können auch die Header Content-Security-Policy-Report-Only
(die parallel zu CSP verwendet werden
können) und Feature Policy zusammengestellt
werden:
http:
# Content Security Policy Report-Only
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Feature Policy
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
HTTP-Cookie
Die Standardwerte einiger Parameter der Methode Nette\Http\Response::setCookie() und der Session können geändert werden.
http:
# Cookie-Gültigkeitsbereich nach Pfad
cookiePath: ... # (string) Standard ist '/'
# Domains, die Cookies akzeptieren
cookieDomain: 'example.com' # (string|domain) Standard ist nicht gesetzt
# Cookies nur über HTTPS senden?
cookieSecure: ... # (bool|auto) Standard ist auto
# Deaktiviert das Senden des Cookies, das Nette als Schutz vor CSRF verwendet
disableNetteCookie: ... # (bool) Standard ist false
Das Attribut cookieDomain
bestimmt, welche Domains Cookies akzeptieren können. Wenn es nicht angegeben ist,
akzeptiert die gleiche (Sub-)Domain, die das Cookie gesetzt hat, aber nicht ihre Subdomains, das Cookie. Wenn
cookieDomain
angegeben ist, sind auch Subdomains enthalten. Daher ist die Angabe von cookieDomain
weniger restriktiv als das Weglassen.
Zum Beispiel sind bei cookieDomain: nette.org
Cookies auch auf allen Subdomains wie doc.nette.org
verfügbar. Dasselbe kann auch mit dem speziellen Wert domain
erreicht werden, also
cookieDomain: domain
.
Der Standardwert auto
für das Attribut cookieSecure
bedeutet, dass, wenn die Website über HTTPS
läuft, Cookies mit dem Secure
-Flag gesendet werden und somit nur über HTTPS verfügbar sind.
HTTP-Proxy
Wenn die Website hinter einem HTTP-Proxy läuft, geben Sie dessen IP-Adresse an, damit die Erkennung der Verbindung über HTTPS
und auch die IP-Adresse des Clients korrekt funktionieren. Das heißt, damit die Funktionen Nette\Http\Request::getRemoteAddress() und isSecured() die korrekten Werte zurückgeben und in Templates Links
mit dem https:
-Protokoll generiert werden.
http:
# IP-Adresse, Bereich (z.B. 127.0.0.1/8) oder Array dieser Werte
proxy: 127.0.0.1 # (string|string[]) Standard ist nicht gesetzt
Session
Grundlegende Einstellungen für Sitzungen:
session:
# Session-Panel in der Tracy Bar anzeigen?
debugger: ... # (bool) Standard ist false
# Inaktivitätsdauer, nach der die Session abläuft
expiration: 14 days # (string) Standard ist '3 hours'
# Wann soll die Session gestartet werden?
autoStart: ... # (smart|always|never) Standard ist 'smart'
# Handler, Dienst, der das SessionHandlerInterface implementiert
handler: @handlerService
Die Option autoStart
steuert, wann die Session gestartet werden soll. Der Wert always
bedeutet, dass
die Session immer beim Start der Anwendung gestartet wird. Der Wert smart
bedeutet, dass die Session beim Start der
Anwendung nur dann gestartet wird, wenn sie bereits existiert, oder in dem Moment, in dem wir daraus lesen oder hineinschreiben
möchten. Und schließlich verbietet der Wert never
den automatischen Start der Session.
Weiterhin können alle PHP Session-Direktiven (im CamelCase-Format) sowie readAndClose eingestellt werden. Beispiel:
session:
# 'session.name' schreiben wir als 'name'
name: MYID
# 'session.save_path' schreiben wir als 'savePath'
savePath: "%tempDir%/sessions"
Session-Cookie
Das Session-Cookie wird mit denselben Parametern wie andere Cookies gesendet, aber diese können für es geändert werden:
session:
# Domains, die Cookies akzeptieren
cookieDomain: 'example.com' # (string|domain)
# Einschränkung beim Zugriff von einer anderen Domain
cookieSamesite: None # (Strict|Lax|None) Standard ist Lax
Das Attribut cookieSamesite
beeinflusst, ob das Cookie beim Zugriff von einer anderen Domain gesendet wird, was einen
gewissen Schutz vor Angriffen durch Cross-Site
Request Forgery (CSRF) bietet.
DI-Dienste
Diese Dienste werden dem DI-Container hinzugefügt:
Name | Typ | Beschreibung |
---|---|---|
http.request |
Nette\Http\Request | HTTP-Anfrage |
http.response |
Nette\Http\Response | HTTP-Antwort |
session.session |
Nette\Http\Session | Session-Verwaltung |