HTTP konfigurieren
Überblick über die Konfigurationsmöglichkeiten für Nette HTTP.
Wenn Sie nicht das gesamte Framework, sondern nur diese Bibliothek verwenden, lesen Sie , wie Sie die Konfiguration laden.
HTTP-Kopfzeilen
http:
# Header, die mit jeder Anfrage gesendet werden
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# betrifft den Header X-Frame-Options
frames: ... # (string|bool) Standardwert ist 'SAMEORIGIN'
Aus Sicherheitsgründen sendet das Framework einen Header X-Frame-Options: SAMEORIGIN
, der besagt, dass eine Seite
nur dann innerhalb einer anderen Seite angezeigt werden kann (im Element <iframe>
) nur angezeigt werden kann,
wenn sie sich auf derselben Domäne befindet. Dies kann in bestimmten Situationen unerwünscht sein (z. B. wenn Sie eine
Facebook-Anwendung entwickeln), daher kann das Verhalten durch die Einstellung von
frames: http://allowed-host.com
.
Sicherheitsrichtlinien für Inhalte
Header Content-Security-Policy
(im Folgenden als CSP bezeichnet) lassen sich leicht zusammenstellen, ihre
Beschreibung ist in der CSP-Beschreibung zu finden. CSP-Direktiven (wie z. B.
script-src
) können zur besseren Lesbarkeit entweder als Zeichenketten gemäß der Spezifikation oder als Arrays von
Werten geschrieben werden. Dann ist es nicht notwendig, Anführungszeichen um Schlüsselwörter wie 'self'
zu setzen.
Nette generiert auch automatisch einen Wert von nonce
, so dass 'nonce-y4PopTLM=='
im Header
gesendet wird.
http:
# Content Security Policy
csp:
# String gemäß CSP-Spezifikation
default-src: "'self' https://example.com"
# Array von Werten
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool für den Fall von Schaltern
upgrade-insecure-requests: true
block-all-mixed-content: false
Verwenden Sie <script n:nonce>...</script>
in den Vorlagen und der Nonce-Wert wird automatisch
ausgefüllt. Die Erstellung sicherer Websites in Nette ist wirklich einfach.
In ähnlicher Weise können die Header Content-Security-Policy-Report-Only
(die parallel zu CSP verwendet werden
können) und Feature Policy hinzugefügt
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
Sie können die Standardwerte einiger Parameter der Methoden Nette\Http\Response::setCookie() und session ändern.
http:
# Cookie-Bereich nach Pfad
cookiePath: ... # (String) standardmäßig '/'
# welche Hosts das Cookie empfangen dürfen
cookieDomain: 'example.com' # (string|domain) ist standardmäßig nicht gesetzt
# Cookies nur über HTTPS senden?
cookieSecure: ... # (bool|auto) ist standardmäßig auf auto eingestellt
# deaktiviert das Senden des Cookies, das Nette als Schutz gegen CSRF verwendet
disableNetteCookie: ... # (bool) Standardwert ist false
Die Option cookieDomain
bestimmt, welche Domänen (Ursprünge) Cookies akzeptieren können. Ist sie nicht
angegeben, wird das Cookie von derselben (Sub-)Domain akzeptiert, die es gesetzt hat, ausgenommen deren Subdomains. Wenn
cookieDomain
angegeben ist, werden auch Subdomains einbezogen. Daher ist die Angabe von cookieDomain
weniger restriktiv als das Weglassen.
Wenn z. B. cookieDomain: nette.org
angegeben wird, ist das Cookie auch auf allen Subdomains wie
doc.nette.org
verfügbar. Dies kann auch mit dem speziellen Wert domain
, also
cookieDomain: domain
erreicht werden.
Der Standardwert von cookieSecure
ist auto
, d. h. wenn die Website über HTTPS läuft, werden Cookies
mit dem Flag Secure
gesendet und sind daher nur über HTTPS verfügbar.
HTTP-Proxy
Wenn die Website hinter einem HTTP-Proxy läuft, geben Sie die IP-Adresse des Proxys ein, damit die Erkennung von
HTTPS-Verbindungen korrekt funktioniert, sowie die IP-Adresse des Clients. Das heißt, damit Nette\Http\Request::getRemoteAddress() und isSecured() die richtigen Werte zurückgeben und Links mit dem
Protokoll https:
in den Vorlagen erzeugt werden.
http:
# IP-Adresse, Bereich (z. B. 127.0.0.1/8) oder Array dieser Werte
proxy: 127.0.0.1 # (string|string[]) ist standardmäßig none
Session
Grundeinstellungen für Sessionen:
session:
# zeigt das Sessionsfenster in der Tracy Bar?
debugger: ... # (bool) ist standardmäßig auf false eingestellt
# Inaktivitätszeit, nach der die Session abläuft
expiration: 14 days # (string) Standardwert ist '3 Stunden'
# wann wird die Session gestartet?
autoStart: ... # (smart|always|never) Standardwert ist 'smart'
# handler, Dienst, der die Schnittstelle SessionHandlerInterface implementiert
handler: @handlerService
Mit der Option autoStart
wird festgelegt, wann die Session gestartet werden soll. Der Wert always
bedeutet, dass die Session immer gestartet wird, wenn die Anwendung startet. Der Wert smart
bedeutet, dass die
Session beim Starten der Anwendung nur dann gestartet wird, wenn sie bereits existiert, oder in dem Moment, in dem wir aus ihr
lesen oder in sie schreiben wollen. Mit dem Wert never
schließlich wird der automatische Start der Session
deaktiviert.
Sie können auch alle PHP-Session-Direktiven (im camelCase-Format) und auch readAndClose setzen. Beispiel:
session:
# 'session.name' geschrieben als 'name'
name: MYID
# 'session.save_path' geschrieben als 'savePath'
savePath: "%tempDir%/sessions"
Sessions-Cookie
Das Sessions-Cookie wird mit denselben Parametern wie andere Cookies gesendet, aber Sie können diese Parameter ändern:
session:
# welche Hosts dürfen das Cookie erhalten
cookieDomain: 'example.com' # (string|domain)
# Einschränkungen beim Zugriff auf herkunftsübergreifende Anfragen
cookieSamesite: None # (Strict|Lax|None) Standardwert ist Lax
Die Option cookieSamesite
bestimmt, ob das Cookie bei herkunftsübergreifenden Anfragen gesendet wird, was einen
gewissen Schutz gegen Cross-Site Request
Forgery-Angriffe 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 | Sitzungsverwaltung |