Configurarea HTTP
Prezentare generală a opțiunilor de configurare pentru Nette HTTP.
Dacă nu utilizați întregul cadru, ci doar această bibliotecă, citiți cum se încarcă configurația.
Antetele HTTP
http:
# antetele care sunt trimise cu fiecare cerere
headers:
X-Powered-By: MyCMS
X-Content-Type-Options: nosniff
X-XSS-Protection: '1; mode=block'
# afectează antetul X-Frame-Options
frames: ... # (string|bool) valoarea implicită este "SAMEORIGIN".
Din motive de securitate, framework-ul trimite un antet X-Frame-Options: SAMEORIGIN
, care spune că o pagină
poate fi afișată în interiorul altei pagini (în elementul <iframe>
) numai dacă aceasta se află pe
același domeniu. Acest lucru poate fi nedorit în anumite situații (de exemplu, dacă dezvoltați o aplicație Facebook),
astfel încât comportamentul poate fi modificat prin setarea cadrelor frames: http://allowed-host.com
.
Politica de securitate a conținutului
Headers Content-Security-Policy
(denumită în continuare CSP) poate fi asamblată cu ușurință, iar descrierea
acestora poate fi găsită în descrierea CSP. Directivele CSP (cum ar fi
script-src
) pot fi scrise fie sub formă de șiruri de caractere, în conformitate cu specificațiile, fie sub formă
de matrice de valori pentru o mai bună lizibilitate. În acest caz, nu este nevoie să se scrie ghilimele în jurul cuvintelor
cheie, cum ar fi 'self'
. De asemenea, Nette va genera automat o valoare de nonce
, astfel încât
'nonce-y4PopTLM=='
va fi trimis în antet.
http:
# Politica de securitate a conținutului
csp:
# șir de caractere în conformitate cu specificația CSP
default-src: "'self' https://example.com"
# matrice de valori
script-src:
- nonce
- strict-dynamic
- self
- https://example.com
# bool în cazul comutatoarelor
upgrade-insecure-requests: true
block-all-mixed-content: false
Utilizați <script n:nonce>...</script>
în șabloane, iar valoarea nonce va fi completată automat.
Realizarea de site-uri web securizate în Nette este foarte ușoară.
În mod similar, pot fi adăugate antetele Content-Security-Policy-Report-Only
(care poate fi utilizat în paralel
cu CSP) și Feature Policy:
http:
# Raport privind politica de securitate a conținutului
cspReportOnly:
default-src: self
report-uri: 'https://my-report-uri-endpoint'
# Politica privind caracteristicile
featurePolicy:
unsized-media: none
geolocation:
- self
- https://example.com
Cookie HTTP
Puteți modifica valorile implicite ale unor parametri din metodele Nette\Http\Response::setCookie() și session.
http:
# domeniul de aplicare al cookie-urilor în funcție de cale
cookiePath: ... # (șir de caractere) valoarea implicită este "/
# ce gazde sunt autorizate să primească cookie-ul
cookieDomain: 'example.com' # (șir|domeniu) implicit la unset
# pentru a trimite cookie-uri numai prin HTTPS?
cookieSecure: ... # (bool|auto) valoarea implicită este auto
# dezactivează trimiterea cookie-ului pe care Nette îl folosește ca protecție împotriva CSRF
disableNetteCookie: ... # (bool) are valoarea implicită false
Opțiunea cookieDomain
determină domeniile (originile) care pot accepta cookie-uri. Dacă nu este specificată,
cookie-ul este acceptat de același (sub)domeniu ca și cel stabilit de acesta, excluzând subdomeniile acestora. Dacă se
specifică cookieDomain
, atunci sunt incluse și subdomeniile. Prin urmare, specificarea cookieDomain
este mai puțin restrictivă decât omiterea.
De exemplu, dacă este setat cookieDomain: nette.org
, cookie-ul este, de asemenea, disponibil pe toate
subdomeniile ca doc.nette.org
. Acest lucru poate fi realizat și cu valoarea specială domain
, adică
cookieDomain: domain
.
Valoarea implicită a cookieSecure
este auto
, ceea ce înseamnă că, dacă site-ul web rulează pe
HTTPS, cookie-urile vor fi trimise cu steagul Secure
și, prin urmare, vor fi disponibile numai prin HTTPS.
Proxy HTTP
Dacă site-ul rulează în spatele unui proxy HTTP, introduceți adresa IP a proxy-ului pentru ca detectarea conexiunilor HTTPS
să funcționeze corect, precum și adresa IP a clientului. Adică, pentru ca Nette\Http\Request::getRemoteAddress() și isSecured() să returneze valorile corecte și pentru ca
legăturile să fie generate cu protocolul https:
în șabloane.
http:
# Adresa IP, interval (de exemplu, 127.0.0.1/8) sau o serie de aceste valori
proxy: 127.0.0.1 # (string|string[]) valoarea implicită este niciuna
Sesiunea
Setări de bază pentru sesiuni:
session:
# arată panoul de sesiune în Tracy Bar?
debugger: ... # (bool) valoarea implicită este false
# timpul de inactivitate după care expiră sesiunea
expiration: 14 days # (string) valoarea implicită este "3 ore
# când să înceapă sesiunea?
autoStart: ... # (smart|always|never) valoarea implicită este "smart".
# handler, serviciu care implementează interfața SessionHandlerInterface
handler: @handlerService
Opțiunea autoStart
controlează momentul în care începe sesiunea. Valoarea always
înseamnă că
sesiunea este întotdeauna inițiată la pornirea aplicației. Valoarea smart
înseamnă că sesiunea va fi pornită
la pornirea aplicației numai dacă există deja sau în momentul în care dorim să citim sau să scriem în ea. În cele din
urmă, valoarea never
dezactivează pornirea automată a sesiunii.
De asemenea, puteți seta toate directivele de sesiune PHP (în format camelCase) și, de asemenea, readAndClose. Exemplu:
session:
# 'session.name' scris ca 'name'
name: MYID
# 'session.save_path' scris ca 'savePath'
savePath: "%tempDir%/sessions"
Cookie de sesiune
Cookie-ul de sesiune este trimis cu aceiași parametri ca și celelalte cookie-uri, dar îi puteți modifica:
session:
# ce gazde sunt autorizate să primească cookie-ul
cookieDomain: 'example.com' # (șir|domeniu)
# restricții la accesarea unei cereri de origine încrucișată
cookieSamesite: None # (Strict|Lax|None) valoarea implicită este Lax
Opțiunea cookieSamesite
influențează dacă cookie-ul este trimis în cazul cererilor cu origine înc rucișată, ceea ce oferă o anumită
protecție împotriva atacurilor de falsificare a cererilor încrucișate pe site (Cross-Site Request Forgery).
Servicii DI
Aceste servicii sunt adăugate la containerul DI:
Nume | Tip | Tip | Descriere
http.request |
Nette\Http\Request | cerere HTTP |
---|---|---|
http.response |
Nette\Http\Response | răspuns HTTP |
session.session |
Nette\Http\Session | gestionarea sesiunii |