Nette Documentation Preview

syntax
Configuration HTTP
******************
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

http:
	# en-têtes qui seront 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) la valeur par défaut est 'SAMEORIGIN'

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=='.

http:
	# Content Security Policy
	csp:
		# chaîne de caractères au format selon la spécification CSP
		default-src: "'self' https://example.com"

		# tableau de valeurs
		script-src:
			- nonce
			- strict-dynamic
			- self
			- https://example.com

		# booléen dans le cas des commutateurs
		upgrade-insecure-requests: true
		block-all-mixed-content: false

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 :

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

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.

http:
	# portée du cookie selon le chemin
	cookiePath: ...          # (string) la valeur par défaut est '/'

	# domaines qui acceptent le cookie
	cookieDomain: 'example.com'  # (string|domain) la valeur par défaut n'est pas définie

	# envoyer le cookie uniquement via HTTPS ?
	cookieSecure: ...        # (bool|auto) la valeur par défaut est auto

	# désactive l'envoi du cookie utilisé par Nette comme protection contre CSRF
	disableNetteCookie: ...  # (bool) la valeur par défaut est false

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.

http:
	# Adresse IP, plage (par ex. 127.0.0.1/8) ou tableau de ces valeurs
	proxy: 127.0.0.1       # (string|string[]) la valeur par défaut n'est pas définie

Session

Configuration de base des sessions :

session:
	# afficher le panneau de session dans la barre Tracy ?
	debugger: ...        # (bool) la valeur par défaut est false

	# durée d'inactivité après laquelle la session expire
	expiration: 14 days  # (string) la valeur par défaut est '3 hours'

	# quand la session doit-elle démarrer ?
	autoStart: ...       # (smart|always|never) la valeur par défaut est 'smart'

	# gestionnaire, service implémentant l'interface SessionHandlerInterface
	handler: @handlerService

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 :

session:
	# 'session.name' s'écrit 'name'
	name: MYID

	# 'session.save_path' s'écrit 'savePath'
	savePath: "%tempDir%/sessions"

Le cookie de session est envoyé avec les mêmes paramètres que les autres cookies, mais vous pouvez modifier ceux-ci pour lui :

session:
	# domaines qui acceptent le cookie
	cookieDomain: 'example.com'   # (string|domain)

	# restriction lors de l'accès depuis un autre domaine
	cookieSamesite: None          # (Strict|Lax|None) la valeur par défaut est Lax

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