HTTP konfigurálása
A Nette HTTP konfigurációs lehetőségeinek áttekintése.
Ha nem a teljes keretrendszert, hanem csak ezt a könyvtárat használja, olvassa el , hogyan töltse be a konfigurációt.
HTTP fejlécek
http:
# headerek, amelyeket minden egyes kéréssel elküldenek
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 értéke 'SAMEORIGIN'
Biztonsági okokból a keretrendszer egy X-Frame-Options: SAMEORIGIN
fejlécet küld, amely azt mondja, hogy egy
oldal egy másik oldalon belül jeleníthető meg (az elemben <iframe>
) csak akkor, ha az ugyanabban a
tartományban van. Ez bizonyos helyzetekben nem kívánatos lehet (például, ha Facebook-alkalmazást fejlesztünk), ezért a
viselkedés megváltoztatható a frames: http://allowed-host.com
.
Tartalombiztonsági politika
Fejlécek Content-Security-Policy
(a továbbiakban CSP) könnyen összeállítható, leírásuk a CSP leírásában található. A CSP irányelvek (például
script-src
) a specifikációnak megfelelően karakterláncokként vagy a jobb olvashatóság érdekében
értékekből álló tömbként írhatók. Ekkor nem szükséges idézőjeleket írni az olyan kulcsszavak köré, mint a
'self'
. A Nette automatikusan generálja a nonce
értékét is, így a 'nonce-y4PopTLM=='
a fejlécben kerül elküldésre.
http:
# Content Security Policy
csp:
# a CSP specifikáció szerinti karakterlánc
default-src: "'self' https://example.com"
# értékek tömbje
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool a kapcsolók esetében
upgrade-insecure-requests: true
block-all-mixed-content: false
Használja a <script n:nonce>...</script>
a sablonokban, és a nonce érték automatikusan
kitöltődik. Biztonságos weboldalak készítése a Nette-ben nagyon egyszerű.
Hasonlóképpen hozzáadható a Content-Security-Policy-Report-Only
fejléc (amely a CSP-vel párhuzamosan
használható) és a Feature Policy:
http:
# Csak a tartalombiztonsági szabályzat jelentése
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Feature Policy
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
HTTP süti
A Nette\Http\Response::setCookie() és a session metódusok néhány paraméterének alapértelmezett értékét megváltoztathatja.
http:
# cookie hatókör az útvonal szerint
cookiePath: ... # (string) alapértelmezett értéke '/'
# mely hosztok kaphatják meg a cookie-t
cookieDomain: 'example.com' # (string|domain) alapértelmezés szerint nem beállított
# a cookie-kat csak HTTPS-en keresztül küldjük?
cookieSecure: ... # (bool|auto) alapértelmezés szerint auto
# letiltja a cookie küldését, amelyet a Nette a CSRF elleni védelemként használ.
disableNetteCookie: ... # (bool) alapértelmezés szerint false
A cookieDomain
opció határozza meg, hogy mely tartományok (eredet) fogadhatják el a cookie-kat. Ha nincs
megadva, akkor a cookie-t ugyanaz a (al)tartomány fogadja el, amelyik az általa beállított, kizárva az aldomainjeiket.
Ha a cookieDomain
van megadva, akkor az aldomainek is bevonásra kerülnek. Ezért a cookieDomain
megadása kevésbé korlátozó, mint az elhagyása.
Például, ha a cookieDomain: nette.org
van megadva, a cookie az összes aldomainen is elérhető, mint a
doc.nette.org
. Ez a domain
, azaz cookieDomain: domain
speciális értékével is
elérhető.
A cookieSecure
alapértelmezett értéke a auto
, ami azt jelenti, hogy ha a weboldal HTTPS-en fut, a
cookie-kat a Secure
jelzővel küldi el, és így csak HTTPS-en keresztül lesznek elérhetőek.
HTTP proxy
Ha a webhely HTTP-proxy mögött fut, adja meg a proxy IP-címét, hogy a HTTPS-kapcsolatok felismerése megfelelően
működjön, valamint az ügyfél IP-címét. Azaz, hogy a Nette\Http\Request::getRemoteAddress() és az isSecured() a megfelelő értékeket adja vissza, és a sablonokban
a https:
protokollal generálódjanak linkek.
http:
# IP-cím, tartomány (pl. 127.0.0.0.1/8) vagy ezek tömbje.
proxy: 127.0.0.1 # (string|string[]) alapértelmezett értéke none
Munkamenet
Alapvető munkamenetek beállításai:
session:
# megjeleníti a munkamenet panelt a Tracy Barban?
debugger: ... # (bool) alapértelmezett értéke false
# inaktivitási idő, amely után a munkamenet lejár.
expiration: # (string) alapértelmezett értéke
# mikor kezdjük el a munkamenetet?
autoStart: ... # (smart|always|never) alapértelmezés szerint 'smart'
# handler, a SessionHandlerInterface interfészt megvalósító szolgáltatás.
handler: @handlerService
A autoStart
opció szabályozza a munkamenet indításának időpontját. A always
érték azt
jelenti, hogy a munkamenet mindig az alkalmazás indításakor indul. A smart
érték azt jelenti, hogy a munkamenet
csak akkor indul el az alkalmazás indításakor, ha már létezik, vagy abban a pillanatban, amikor olvasni akarunk róla vagy
írni akarunk rá. Végül a never
érték kikapcsolja a munkamenet automatikus indítását.
Beállíthatjuk továbbá az összes PHP munkamenet direktívát (camelCase formátumban), valamint a readAndClose értéket is. Példa:
session:
# 'session.name' írva mint 'name'
name: MYID
# 'session.save_path' írva mint 'savePath'
savePath: "%tempDir%/sessions"
Munkamenet süti
A munkamenet süti ugyanazokkal a paraméterekkel kerül elküldésre, mint a többi süti, de ezeket megváltoztathatja:
session:
# mely hosztok kaphatják meg a cookie-t
cookieDomain: 'example.com' # (string|domain)
# korlátozások a cross-origin kérés elérésekor
cookieSamesite: None # (Strict|Lax|None) alapértelmezés szerint Lax
A cookieSamesite
opció befolyásolja, hogy a cookie-t a cross-origin kérésekkel együtt küldi-e el, ami némi
védelmet nyújt a Cross-Site Request Forgery
támadások ellen.
DI-szolgáltatások
Ezek a szolgáltatások hozzáadódnak a DI konténerhez:
Név | Típus | Leírás |
---|---|---|
http.request |
Nette\Http\Request | HTTP-kérelem |
http.response |
Nette\Http\Response | HTTP-válasz |
session.session |
Nette\Http\Session | session management |