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

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"

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
version: 4.0