Configuration de HTTP
Aperçu des options de configuration de la Nette HTTP.
Si vous n'utilisez pas l'ensemble du framework, mais seulement cette bibliothèque, lisez comment charger la configuration.
En-têtes HTTP
http:
# les en-têtes qui sont envoyés avec chaque requête
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'.
# affecte l'en-tête X-Frame-Options
frames: ... # (string|bool) a pour valeur par défaut 'SAMEORIGIN'.
Pour des raisons de sécurité, le framework envoie un en-tête X-Frame-Options: SAMEORIGIN
, qui indique qu'une
page peut être affichée à l'intérieur d'une autre page (dans l'élément <iframe>
) uniquement si celle-ci
se trouve sur le même domaine. Cela peut être indésirable dans certaines situations (par exemple, si vous développez une
application Facebook), le comportement peut donc être modifié en définissant les cadres
frames: http://allowed-host.com
.
Politique de sécurité du contenu
Les en-têtes Content-Security-Policy
(ci-après dénommés CSP) peuvent être facilement assemblés, leur
description se trouve dans la description CSP. Les directives CSP (telles que
script-src
) peuvent être écrites soit sous forme de chaînes de caractères conformément aux spécifications, soit
sous forme de tableaux de valeurs pour une meilleure lisibilité. Il n'est alors pas nécessaire d'écrire des guillemets autour
de mots-clés tels que 'self'
. Nette générera aussi automatiquement une valeur de nonce
, donc
'nonce-y4PopTLM=='
sera envoyé dans l'en-tête.
http:
# Content Security Policy
csp:
# chaîne selon la spécification CSP
default-src: "'self' https://example.com"
# tableau de valeurs
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool dans le cas de commutations
upgrade-insecure-requests: true
block-all-mixed-content: false
Utilisez <script n:nonce>...</script>
dans les modèles et la valeur nonce sera remplie
automatiquement. Il est très facile de créer des sites Web sécurisés avec Nette.
De même, les en-têtes Content-Security-Policy-Report-Only
(qui peuvent être utilisés en parallèle avec CSP)
et Feature Policy peuvent être ajoutés :
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
Cookie HTTP
Vous pouvez modifier les valeurs par défaut de certains paramètres des méthodes Nette\Http\Response::setCookie() et session.
http:
# cookie scope by path
cookiePath: ... # (chaîne), la valeur par défaut est '/'.
# quels hôtes sont autorisés à recevoir le cookie
cookieDomain: 'example.com' # (string|domain) a pour valeur par défaut unset
# pour envoyer les cookies uniquement via HTTPS ?
cookieSecure: ... # (bool|auto) valeur par défaut: auto
# désactive l'envoi du cookie que Nette utilise comme protection contre CSRF
disableNetteCookie: ... # (bool) valeur par défaut: false
L'option cookieDomain
détermine quels domaines (origines) peuvent accepter les cookies. Si elle n'est pas
spécifiée, le cookie est accepté par le même (sous-)domaine que celui qu'il définit, à l'exclusion de leurs
sous-domaines. Si cookieDomain
est spécifié, les sous-domaines sont également inclus. Par conséquent, spécifier
cookieDomain
est moins restrictif que de l'omettre.
Par exemple, si cookieDomain: nette.org
est défini, le cookie est également disponible sur tous les
sous-domaines comme doc.nette.org
. Ceci peut également être réalisé avec la valeur spéciale domain
,
c'est-à-dire cookieDomain: domain
.
La valeur par défaut de cookieSecure
est auto
, ce qui signifie que si le site Web fonctionne en
HTTPS, les cookies seront envoyés avec le drapeau Secure
et ne seront donc disponibles que via HTTPS.
Proxy HTTP
Si le site fonctionne derrière un proxy HTTP, entrez l'adresse IP du proxy pour que la détection des connexions HTTPS
fonctionne correctement, ainsi que l'adresse IP du client. C'est-à-dire pour que Nette\Http\Request::getRemoteAddress() et isSecured() renvoient les bonnes valeurs et que les liens soient
générés avec le protocole https:
dans les modèles.
http:
# adresse IP, plage (ex. 127.0.0.1/8) ou tableau de ces valeurs
proxy: 127.0.0.1 # (string|string[]) La valeur par défaut est none.
Session
Paramètres de base des sessions:
session:
# affiche le panneau de session dans Tracy Bar ?
debugger: ... # (bool) par défaut à false
# temps d'inactivité après lequel la session expire
expiration: 14 jours # (string) a pour valeur par défaut '3 hours' (3 heures)
# quand démarrer la session ?
autoStart: ... # (smart|always|never) Valeur par défaut: 'smart'.
# handler, service qui implémente l'interface SessionHandlerInterface
handler: @handlerService
L'option autoStart
contrôle quand démarrer la session. La valeur always
signifie que la session est
toujours lancée au démarrage de l'application. La valeur smart
signifie que la session sera démarrée au
démarrage de l'application uniquement si elle existe déjà, ou au moment où nous voulons lire ou écrire dans celle-ci. Enfin,
la valeur never
désactive le démarrage automatique de la session.
Vous pouvez également définir toutes les directives de session PHP (au format camelCase) ainsi que readAndClose. Exemple :
session:
# 'session.name' est écrit comme 'name'.
name: MYID
# 'session.save_path' écrit en tant que 'savePath'.
savePath: "%tempDir%/sessions"
Cookie de session
Le cookie de session est envoyé avec les mêmes paramètres que les autres cookies, mais vous pouvez les modifier :
session:
# quels hôtes sont autorisés à recevoir le cookie
cookieDomain: 'exemple.com' # (string|domain)
# restrictions lors de l'accès à une demande d'origine croisée
cookieSamesite: None # (Strict|Lax|None) valeur par défaut: Lax
L'option cookieSamesite
détermine si le cookie est envoyé avec les demandes d'origine croisée, ce qui offre une certaine protection
contre les attaques de type Cross-Site Request
Forgery.
Services DI
Ces services sont ajoutés au conteneur DI :
Nom | Type | Description |
---|---|---|
http.request |
Nette\Http\Request | HTTP request |
http.response |
Nette\Http\Response | réponse HTTP |
session.session |
Nette\Http\Session | gestion de session |