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
HTTP cookie
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"
Session cookie
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 |