Konfiguracja HTTP
Przegląd opcji konfiguracyjnych dla Nette HTTP.
Jeśli nie używasz całego frameworka, a jedynie tej biblioteki, przeczytaj jak załadować konfigurację.
Nagłówki HTTP
Ze względów bezpieczeństwa framework wysyła nagłówek X-Frame-Options: SAMEORIGIN
, który mówi, że strona
może być wyświetlana wewnątrz innej strony (w elemencie <iframe>
) tylko wtedy, gdy znajduje się w tej
samej domenie. Może to być niepożądane w niektórych sytuacjach (na przykład, jeśli tworzysz aplikację dla Facebooka),
więc możesz zmienić zachowanie, ustawiając frames: http://allowed-host.com
.
Polityka bezpieczeństwa treści
Łatwo jest zbudować nagłówki Content-Security-Policy
(dalej CSP), zobacz opis CSP dla opisu. Dyrektywy CSP (takie jak script-src
) mogą być
zapisane jako łańcuchy zgodnie ze specyfikacją lub jako tablica wartości dla lepszej czytelności. Wtedy nie ma potrzeby
pisania cudzysłowów wokół słów kluczowych, takich jak na przykład 'self'
,. Nette automatycznie wygeneruje
również wartość nonce
, więc w nagłówku będzie napisane 'nonce-y4PopTLM=='
.
W szablonach należy używać <script n:nonce>...</script>
a wartość nonce zostanie dodana
automatycznie. Tworzenie bezpiecznych stron w Nette jest naprawdę proste.
Podobnie można zbudować nagłówki Content-Security-Policy-Report-Only
(które mogą być używane równolegle
z CSP) i Feature Policy:
Ciasteczko HTTP
Możesz zmienić domyślne wartości niektórych parametrów metod Nette\Http\Response::setCookie() i session.
Atrybut cookieDomain
określa, które domeny mogą akceptować pliki cookie. Jeśli nie jest określone, plik
cookie jest akceptowany przez tę samą (pod)domenę, która go ustawiła, ale nie jej subdomeny. Jeśli określono
cookieDomain
, uwzględniane są subdomeny. Dlatego określenie cookieDomain
jest mniej restrykcyjne niż
pominięcie go.
Na przykład, w przypadku cookieDomain: nette.org
, pliki cookie są również dostępne na wszystkich subdomenach
jako doc.nette.org
. To samo można również osiągnąć za pomocą wartości specjalnej domain
, czyli
cookieDomain: domain
.
Domyślna wartość auto
dla atrybutu cookieSecure
oznacza, że jeśli strona działa na HTTPS, pliki
cookie będą wysyłane z flagą Secure
, a więc będą dostępne tylko przez HTTPS.
Proxy HTTP
Jeśli witryna działa za proxy HTTP, wpisz jego adres IP, aby wykrywanie połączenia HTTPS działało poprawnie, a także
adres IP klienta. Oznacza to, że funkcje Nette:getRemoteAddress() i isSecured() zwracają poprawne wartości i generują w szablonach linki z protokołem
https:
.
Sesja
Podstawowe ustawienia sesji:
Opcja autoStart
kontroluje, kiedy rozpocząć sesję. Wartość always
oznacza, że sesja będzie
zawsze uruchamiana w momencie startu aplikacji. Wartość smart
oznacza, że sesja będzie uruchamiana tylko w
momencie startu aplikacji, jeśli już istnieje, lub gdy będziemy chcieli z niej czytać lub do niej pisać. Wreszcie, wartość
never
wyłącza automatyczne rozpoczynanie sesji.
Możesz również ustawić wszystkie dyrektywy sesji PHP (w formacie camelCase), a także readAndClose. Przykład:
Plik cookie sesji
Sesyjny plik cookie jest wysyłany z takimi samymi parametrami jak inne pliki cookie, ale możesz je dla niego zmienić:
Atrybut cookieSamesite
wpływa na to, czy plik cookie jest wysyłany przy dostępie z innej domeny, co zapewnia pewną ochronę przed
atakami Cross-Site Request Forgery
(CSRF).
Usługi DI
Usługi te są dodawane do kontenera DI:
Nazwa | Typ | Opis |
---|---|---|
http.request |
Nette\Http\Request | żądanie HTTP |
http.response |
Nette\Http\Response | odpowiedź HTTP |
session.session |
Nette\Http\Session | zarządzanie sesją |