Configurazione di HTTP
Panoramica delle opzioni di configurazione di Nette HTTP.
Se non si utilizza l'intero framework, ma solo questa libreria, leggere come caricare la configurazione.
Intestazioni HTTP
http:
# intestazioni che vengono inviate con ogni richiesta
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# influisce sull'intestazione X-Frame-Options
frames: ... # (string|bool) predefinito a "SAMEORIGIN".
Per motivi di sicurezza, il framework invia un'intestazione X-Frame-Options: SAMEORIGIN
, che dice che una pagina
può essere visualizzata all'interno di un'altra pagina (nell'elemento <iframe>
) solo se si trova sullo stesso
dominio. Questo può essere indesiderato in alcune situazioni (per esempio, se si sta sviluppando un'applicazione Facebook),
quindi il comportamento può essere modificato impostando i frame frames: http://allowed-host.com
.
Politica di sicurezza dei contenuti
Le intestazioni Content-Security-Policy
(d'ora in poi denominate CSP) possono essere facilmente assemblate; la
loro descrizione si trova nella descrizione delle CSP. Le direttive CSP (come
script-src
) possono essere scritte come stringhe secondo le specifiche o come array di valori per una migliore
leggibilità. Non è quindi necessario scrivere le virgolette intorno a parole chiave come 'self'
. Nette genererà
automaticamente anche un valore di nonce
, quindi 'nonce-y4PopTLM=='
sarà inviato nell'intestazione.
http:
# Politica di sicurezza dei contenuti
csp:
# stringa secondo le specifiche CSP
default-src: "'self' https://example.com"
# array di valori
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool nel caso di switch
upgrade-insecure-requests: true
block-all-mixed-content: false
Utilizzare <script n:nonce>...</script>
nei template e il valore nonce verrà compilato
automaticamente. Creare siti web sicuri in Nette è davvero facile.
Allo stesso modo, è possibile aggiungere le intestazioni Content-Security-Policy-Report-Only
(che può essere
utilizzata in parallelo con CSP) e Feature
Policy:
http:
# Rapporto sulla politica di sicurezza dei contenuti
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Politica sulle caratteristiche
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
Cookie HTTP
È possibile modificare i valori predefiniti di alcuni parametri dei metodi Nette\Http\Response::setCookie() e session.
http:
# cookie scope per percorso
cookiePath: ... # (string) predefinito a "/".
# quali host sono autorizzati a ricevere il cookie
cookieDomain: 'example.com' # (string|dominio) predefinito a non impostato
# inviare i cookie solo tramite HTTPS?
cookieSecure: ... # (bool|auto) predefinito a auto
# disabilita l'invio del cookie che Nette usa come protezione contro il CSRF
disableNetteCookie: ... # (bool) predefinito a false
L'opzione cookieDomain
determina quali domini (origini) possono accettare i cookie. Se non è specificata, il
cookie viene accettato dallo stesso (sotto)dominio in cui è impostato, escludendo i suoi sottodomini. Se viene
specificato cookieDomain
, sono inclusi anche i sottodomini. Pertanto, specificare cookieDomain
è meno
restrittivo che ometterlo.
Ad esempio, se viene impostato cookieDomain: nette.org
, il cookie è disponibile anche su tutti i sottodomini
come doc.nette.org
. Questo può essere ottenuto anche con il valore speciale domain
, cioè
cookieDomain: domain
.
Il valore predefinito di cookieSecure
è auto
, il che significa che se il sito web funziona su HTTPS,
i cookie saranno inviati con il flag Secure
e saranno quindi disponibili solo tramite HTTPS.
Proxy HTTP
Se il sito funziona dietro un proxy HTTP, inserire l'indirizzo IP del proxy in modo che il rilevamento delle connessioni HTTPS
funzioni correttamente, oltre all'indirizzo IP del client. In altre parole, affinché Nette\Http\Request::getRemoteAddress() e isSecured() restituiscano i valori corretti e i link siano generati con il protocollo
https:
nei template.
http:
# indirizzo IP, intervallo (es. 127.0.0.1/8) o array di questi valori
proxy: 127.0.0.1 # (string|stringa[]) predefinito a nessuno
Sessione
Impostazioni di base delle sessioni:
session:
# mostra il pannello della sessione nella barra Tracy?
debugger: ... # (bool) predefinito a false
# tempo di inattività dopo il quale la sessione scade
expiration: 14 days # (string) predefinito a "3 ore".
# quando avviare la sessione?
autoStart: ... # (smart|true|false) predefinito a "smart".
# handler, servizio che implementa l'interfaccia SessionHandlerInterface
handler: @handlerService
L'opzione autoStart
controlla quando avviare la sessione. Il valore always
significa che la sessione
viene sempre avviata all'avvio dell'applicazione. Il valore smart
significa che la sessione verrà avviata all'avvio
dell'applicazione solo se esiste già, oppure nel momento in cui si vuole leggere o scrivere su di essa. Infine, il valore
never
disabilita l'avvio automatico della sessione.
È inoltre possibile impostare tutte le direttive di sessione di PHP (in formato camelCase) e anche readAndClose. Esempio:
session:
# 'session.name' scritto come 'name'.
name: MYID
# 'session.save_path' scritto come 'savePath'
savePath: "%tempDir%/sessioni"
Cookie di sessione
Il cookie di sessione viene inviato con gli stessi parametri degli altri cookie, ma è possibile modificarli:
session:
# quali host sono autorizzati a ricevere il cookie
cookieDomain: 'example.com' # (string|dominio)
# restrizioni per l'accesso a richieste di origine incrociata
cookieSamesite: ... # (Strict|Lax|None) predefinito a Lax
L'opzione cookieSamesite
influisce sull'invio del cookie con le richieste di origine incrociata, il che fornisce una certa
protezione contro gli attacchi di Cross-Site
Request Forgery.
Servizi DI
Questi servizi vengono aggiunti al contenitore DI:
Nome | Tipo | Descrizione |
---|---|---|
http.request |
Nette\Http\Request | Richiesta HTTP |
http.response |
Nette\Http\Response | Risposta HTTP |
session.session |
Nette\Http\Session | gestione della sessione |