Nette Documentation Preview

syntax
HTTP konfiguráció
*****************

.[perex]
A Nette HTTP konfigurációs opcióinak áttekintése.

Ha nem a teljes keretrendszert használja, csak ezt a könyvtárat, olvassa el, [hogyan kell betölteni a konfigurációt|bootstrap:].


HTTP fejlécek
=============

```neon
http:
	# fejlécek, amelyek minden kéréssel elküldésre kerülnek
	headers:
		X-Powered-By: MyCMS
		X-Content-Type-Options: nosniff
		X-XSS-Protection: '1; mode=block'

	# befolyásolja az X-Frame-Options fejlécet
	frames: ...      # (string|bool) alapértelmezett 'SAMEORIGIN'
```

A keretrendszer biztonsági okokból elküldi az `X-Frame-Options: SAMEORIGIN` fejlécet, amely azt mondja, hogy az oldalt csak akkor lehet megjeleníteni egy másik oldalon belül (az `<iframe>` elemben), ha ugyanazon a domainen található. Ez bizonyos helyzetekben nem kívánatos lehet (például ha Facebook alkalmazást fejleszt), a viselkedés ezért megváltoztatható a `frames: http://allowed-host.com` vagy `frames: true` beállítással.


Content Security Policy
-----------------------

Könnyen összeállíthatók a `Content-Security-Policy` (továbbiakban CSP) fejlécek, leírásukat a [CSP leírásában |https://content-security-policy.com] találja. A CSP direktívák (mint pl. `script-src`) megadhatók akár stringként a specifikáció szerint, akár értékek tömbjeként a jobb olvashatóság érdekében. Ekkor nincs szükség idézőjelek írására a kulcsszavak, mint például a `'self'`, köré. A Nette automatikusan generál egy `nonce` értéket is, így a fejlécben például `'nonce-y4PopTLM=='` lesz.

```neon
http:
	# Content Security Policy
	csp:
		# string a CSP specifikáció szerinti formátumban
		default-src: "'self' https://example.com"

		# értékek tömbje
		script-src:
			- nonce
			- strict-dynamic
			- self
			- https://example.com

		# bool kapcsolók esetén
		upgrade-insecure-requests: true
		block-all-mixed-content: false
```

A sablonokban használja a `<script n:nonce>...</script>`-et, és a nonce érték automatikusan kiegészül. Biztonságos webhelyek készítése a Nette-ben valóban egyszerű.

Hasonlóan összeállíthatók a `Content-Security-Policy-Report-Only` (amelyek a CSP-vel párhuzamosan használhatók) és a [Feature Policy|https://developers.google.com/web/updates/2018/06/feature-policy] fejlécek is:

```neon
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
```


HTTP cookie
-----------

Megváltoztathatók a [Nette\Http\Response::setCookie() |response#setCookie] metódus és a session egyes paramétereinek alapértelmezett értékei.

```neon
http:
	# cookie hatóköre útvonal szerint
	cookiePath: ...          # (string) alapértelmezett '/'

	# domainek, amelyek elfogadják a cookie-t
	cookieDomain: 'example.com'  # (string|domain) alapértelmezett nincs beállítva

	# csak HTTPS-en keresztül küldeni a cookie-t?
	cookieSecure: ...        # (bool|auto) alapértelmezett auto

	# kikapcsolja a Nette által CSRF védelemként használt cookie küldését
	disableNetteCookie: ...  # (bool) alapértelmezett false
```

A `cookieDomain` attribútum meghatározza, mely domainek fogadhatják el a cookie-t. Ha nincs megadva, a cookie-t ugyanaz a (sub)domain fogadja el, amelyik beállította, *de nem* annak aldomainjei. Ha a `cookieDomain` meg van adva, az aldomainek is beletartoznak. Ezért a `cookieDomain` megadása kevésbé korlátozó, mint annak elhagyása.

Például a `cookieDomain: nette.org` esetén a cookie-k minden aldomainen, mint például a `doc.nette.org`, is elérhetők. Ugyanezt elérhetjük a speciális `domain` értékkel is, tehát `cookieDomain: domain`.

A `cookieSecure` attribútum `auto` alapértelmezett értéke azt jelenti, hogy ha a webhely HTTPS-en fut, a cookie-k a `Secure` jelzővel kerülnek elküldésre, és így csak HTTPS-en keresztül lesznek elérhetők.


HTTP proxy
----------

Ha a webhely HTTP proxy mögött fut, adja meg annak IP címét, hogy a HTTPS-en keresztüli kapcsolat és a kliens IP címének észlelése megfelelően működjön. Tehát hogy a [Nette\Http\Request::getRemoteAddress() |request#getRemoteAddress] és [isSecured() |request#isSecured] függvények helyes értékeket adjanak vissza, és a sablonokban a linkek `https:` protokollal generálódjanak.

```neon
http:
	# IP cím, tartomány (pl. 127.0.0.1/8) vagy ezen értékek tömbje
	proxy: 127.0.0.1       # (string|string[]) alapértelmezett nincs beállítva
```


Session
=======

Alapvető [session |sessions] beállítások:

```neon
session:
	# session panel megjelenítése a Tracy Bar-ban?
	debugger: ...        # (bool) alapértelmezett false

	# inaktivitási idő, amely után a session lejár
	expiration: 14 days  # (string) alapértelmezett '3 hours'

	# mikor kell elindítani a sessiont?
	autoStart: ...       # (smart|always|never) alapértelmezett 'smart'

	# handler, a SessionHandlerInterface interfészt implementáló szolgáltatás
	handler: @handlerService
```

Az `autoStart` opció vezérli, hogy mikor kell elindítani a sessiont. Az `always` érték azt jelenti, hogy a session mindig elindul az alkalmazás indításakor. A `smart` érték azt jelenti, hogy a session csak akkor indul el az alkalmazás indításakor, ha már létezik, vagy abban a pillanatban, amikor olvasni vagy írni akarunk belőle. Végül a `never` érték letiltja a session automatikus indítását.

Továbbá beállíthatók az összes PHP [session direktíva |https://www.php.net/manual/en/session.configuration.php] (camelCase formátumban) és a [readAndClose |https://www.php.net/manual/en/function.session-start.php#refsect1-function.session-start-parameters] is. Példa:

```neon
session:
	# 'session.name' írjuk 'name'-ként
	name: MYID

	# 'session.save_path' írjuk 'savePath'-ként
	savePath: "%tempDir%/sessions"
```


Session cookie
--------------

A session cookie ugyanazokkal a paraméterekkel kerül elküldésre, mint a [más cookie-k |#HTTP cookie], de ezeket megváltoztathatja számára:

```neon
session:
	# domainek, amelyek elfogadják a cookie-t
	cookieDomain: 'example.com'   # (string|domain)

	# korlátozások más domainről való hozzáférés esetén
	cookieSamesite: None          # (Strict|Lax|None) alapértelmezett Lax
```

A `cookieSamesite` attribútum befolyásolja, hogy a cookie elküldésre kerül-e [más domainről való hozzáférés |nette:glossary#SameSite cookie] esetén, ami bizonyos védelmet nyújt a [Cross-Site Request Forgery |nette:glossary#Cross-Site Request Forgery CSRF] (CSRF) támadások ellen.


DI szolgáltatások
=================

Ezek a szolgáltatások kerülnek hozzáadásra a DI konténerhez:

| Név             | Típus                      | Leírás
|-----------------------------------------------------
| `http.request`  | [api:Nette\Http\Request]   | [HTTP kérés| request]
| `http.response` | [api:Nette\Http\Response]  | [HTTP válasz| response]
| `session.session`| [api:Nette\Http\Session]   | [session kezelés| sessions]

HTTP konfiguráció

A Nette HTTP konfigurációs opcióinak áttekintése.

Ha nem a teljes keretrendszert használja, csak ezt a könyvtárat, olvassa el, hogyan kell betölteni a konfigurációt.

HTTP fejlécek

http:
	# fejlécek, amelyek minden kéréssel elküldésre kerülnek
	headers:
		X-Powered-By: MyCMS
		X-Content-Type-Options: nosniff
		X-XSS-Protection: '1; mode=block'

	# befolyásolja az X-Frame-Options fejlécet
	frames: ...      # (string|bool) alapértelmezett 'SAMEORIGIN'

A keretrendszer biztonsági okokból elküldi az X-Frame-Options: SAMEORIGIN fejlécet, amely azt mondja, hogy az oldalt csak akkor lehet megjeleníteni egy másik oldalon belül (az <iframe> elemben), ha ugyanazon a domainen található. Ez bizonyos helyzetekben nem kívánatos lehet (például ha Facebook alkalmazást fejleszt), a viselkedés ezért megváltoztatható a frames: http://allowed-host.com vagy frames: true beállítással.

Content Security Policy

Könnyen összeállíthatók a Content-Security-Policy (továbbiakban CSP) fejlécek, leírásukat a CSP leírásában találja. A CSP direktívák (mint pl. script-src) megadhatók akár stringként a specifikáció szerint, akár értékek tömbjeként a jobb olvashatóság érdekében. Ekkor nincs szükség idézőjelek írására a kulcsszavak, mint például a 'self', köré. A Nette automatikusan generál egy nonce értéket is, így a fejlécben például 'nonce-y4PopTLM==' lesz.

http:
	# Content Security Policy
	csp:
		# string a CSP specifikáció szerinti formátumban
		default-src: "'self' https://example.com"

		# értékek tömbje
		script-src:
			- nonce
			- strict-dynamic
			- self
			- https://example.com

		# bool kapcsolók esetén
		upgrade-insecure-requests: true
		block-all-mixed-content: false

A sablonokban használja a <script n:nonce>...</script>-et, és a nonce érték automatikusan kiegészül. Biztonságos webhelyek készítése a Nette-ben valóban egyszerű.

Hasonlóan összeállíthatók a Content-Security-Policy-Report-Only (amelyek a CSP-vel párhuzamosan használhatók) és a Feature Policy fejlécek is:

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

Megváltoztathatók a Nette\Http\Response::setCookie() metódus és a session egyes paramétereinek alapértelmezett értékei.

http:
	# cookie hatóköre útvonal szerint
	cookiePath: ...          # (string) alapértelmezett '/'

	# domainek, amelyek elfogadják a cookie-t
	cookieDomain: 'example.com'  # (string|domain) alapértelmezett nincs beállítva

	# csak HTTPS-en keresztül küldeni a cookie-t?
	cookieSecure: ...        # (bool|auto) alapértelmezett auto

	# kikapcsolja a Nette által CSRF védelemként használt cookie küldését
	disableNetteCookie: ...  # (bool) alapértelmezett false

A cookieDomain attribútum meghatározza, mely domainek fogadhatják el a cookie-t. Ha nincs megadva, a cookie-t ugyanaz a (sub)domain fogadja el, amelyik beállította, de nem annak aldomainjei. Ha a cookieDomain meg van adva, az aldomainek is beletartoznak. Ezért a cookieDomain megadása kevésbé korlátozó, mint annak elhagyása.

Például a cookieDomain: nette.org esetén a cookie-k minden aldomainen, mint például a doc.nette.org, is elérhetők. Ugyanezt elérhetjük a speciális domain értékkel is, tehát cookieDomain: domain.

A cookieSecure attribútum auto alapértelmezett értéke azt jelenti, hogy ha a webhely HTTPS-en fut, a cookie-k a Secure jelzővel kerülnek elküldésre, és így csak HTTPS-en keresztül lesznek elérhetők.

HTTP proxy

Ha a webhely HTTP proxy mögött fut, adja meg annak IP címét, hogy a HTTPS-en keresztüli kapcsolat és a kliens IP címének észlelése megfelelően működjön. Tehát hogy a Nette\Http\Request::getRemoteAddress() és isSecured() függvények helyes értékeket adjanak vissza, és a sablonokban a linkek https: protokollal generálódjanak.

http:
	# IP cím, tartomány (pl. 127.0.0.1/8) vagy ezen értékek tömbje
	proxy: 127.0.0.1       # (string|string[]) alapértelmezett nincs beállítva

Session

Alapvető session beállítások:

session:
	# session panel megjelenítése a Tracy Bar-ban?
	debugger: ...        # (bool) alapértelmezett false

	# inaktivitási idő, amely után a session lejár
	expiration: 14 days  # (string) alapértelmezett '3 hours'

	# mikor kell elindítani a sessiont?
	autoStart: ...       # (smart|always|never) alapértelmezett 'smart'

	# handler, a SessionHandlerInterface interfészt implementáló szolgáltatás
	handler: @handlerService

Az autoStart opció vezérli, hogy mikor kell elindítani a sessiont. Az always érték azt jelenti, hogy a session mindig elindul az alkalmazás indításakor. A smart érték azt jelenti, hogy a session csak akkor indul el az alkalmazás indításakor, ha már létezik, vagy abban a pillanatban, amikor olvasni vagy írni akarunk belőle. Végül a never érték letiltja a session automatikus indítását.

Továbbá beállíthatók az összes PHP session direktíva (camelCase formátumban) és a readAndClose is. Példa:

session:
	# 'session.name' írjuk 'name'-ként
	name: MYID

	# 'session.save_path' írjuk 'savePath'-ként
	savePath: "%tempDir%/sessions"

A session cookie ugyanazokkal a paraméterekkel kerül elküldésre, mint a más cookie-k, de ezeket megváltoztathatja számára:

session:
	# domainek, amelyek elfogadják a cookie-t
	cookieDomain: 'example.com'   # (string|domain)

	# korlátozások más domainről való hozzáférés esetén
	cookieSamesite: None          # (Strict|Lax|None) alapértelmezett Lax

A cookieSamesite attribútum befolyásolja, hogy a cookie elküldésre kerül-e más domainről való hozzáférés esetén, ami bizonyos védelmet nyújt a Cross-Site Request Forgery (CSRF) támadások ellen.

DI szolgáltatások

Ezek a szolgáltatások kerülnek hozzáadásra a DI konténerhez:

Név Típus Leírás
http.request Nette\Http\Request HTTP kérés
http.response Nette\Http\Response HTTP válasz
session.session Nette\Http\Session session kezelés