Configuration HTTP
Aperçu des options de configuration pour 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
Pour des raisons de sécurité, le framework envoie l'en-tête X-Frame-Options: SAMEORIGIN
, qui indique que la
page ne peut être affichée à l'intérieur d'une autre page (dans un élément <iframe>
) que si elle se
trouve sur le même domaine. Cela peut être indésirable dans certaines situations (par exemple, si vous développez une
application pour Facebook), le comportement peut donc être modifié en définissant frames: http://allowed-host.com
ou frames: true
.
Content Security Policy
Il est facile de construire des en-têtes Content-Security-Policy
(ci-après CSP), dont la description se trouve
dans la description de CSP. Les directives CSP (comme par exemple
script-src
) peuvent être écrites soit comme des chaînes de caractères selon la spécification, soit comme des
tableaux de valeurs pour une meilleure lisibilité. Il n'est alors pas nécessaire d'écrire des guillemets autour des mots-clés,
comme par exemple 'self'
. Nette génère également automatiquement la valeur nonce
, de sorte que
l'en-tête contiendra par exemple 'nonce-y4PopTLM=='
.
Dans les templates, utilisez <script n:nonce>...</script>
et la valeur nonce sera complétée
automatiquement. Créer des sites web sécurisés dans Nette est vraiment facile.
De même, il est possible de construire les en-têtes Content-Security-Policy-Report-Only
(qui peuvent être
utilisés en parallèle avec CSP) et Feature
Policy :
Cookie HTTP
Il est possible de modifier les valeurs par défaut de certains paramètres de la méthode Nette\Http\Response::setCookie() et de la session.
L'attribut cookieDomain
détermine quels domaines peuvent accepter le cookie. S'il n'est pas spécifié, le cookie
est accepté par le même (sous-)domaine qui l'a défini, mais pas par ses 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, avec cookieDomain: nette.org
, les cookies sont également disponibles sur tous les sous-domaines
comme doc.nette.org
. Le même résultat peut également être obtenu en utilisant la valeur spéciale
domain
, c'est-à-dire cookieDomain: domain
.
La valeur par défaut auto
pour l'attribut cookieSecure
signifie que si le site fonctionne en HTTPS,
les cookies seront envoyés avec l'indicateur Secure
et ne seront donc disponibles que via HTTPS.
Proxy HTTP
Si le site fonctionne derrière un proxy HTTP, spécifiez son adresse IP pour que la détection de la connexion via HTTPS et
l'adresse IP du client fonctionnent correctement. C'est-à-dire pour que les fonctions Nette\Http\Request::getRemoteAddress() et isSecured() retournent les bonnes valeurs et que les liens avec le protocole
https:
soient générés dans les templates.
Session
Configuration de base des sessions :
L'option autoStart
contrôle quand la session doit démarrer. La valeur always
signifie que la
session démarrera toujours au lancement de l'application. La valeur smart
signifie que la session ne démarrera au
lancement de l'application que si elle existe déjà, ou au moment où nous voulons lire ou écrire dedans. Enfin, la valeur
never
interdit le démarrage automatique de la session.
De plus, il est possible de définir toutes les directives de session PHP (au format camelCase) ainsi que readAndClose. Exemple :
Cookie de session
Le cookie de session est envoyé avec les mêmes paramètres que les autres cookies, mais vous pouvez modifier ceux-ci pour lui :
L'attribut cookieSamesite
influence si le cookie sera envoyé lors d'un accès depuis un domaine différent, ce qui offre une certaine
protection contre les attaques Cross-Site
Request Forgery (CSRF).
Services DI
Ces services sont ajoutés au conteneur DI :
Nom | Type | Description |
---|---|---|
http.request |
Nette\Http\Request | Requête HTTP |
http.response |
Nette\Http\Response | Réponse HTTP |
session.session |
Nette\Http\Session | Gestion de session |