Konfigurace HTTP
Přehled konfiguračních voleb pro Nette HTTP.
Pokud nepoužívate celý framework, ale jen tuto knihovnu, přečtěte si, jak konfiguraci načíst.
HTTP hlavičky
Framework z bezpečnostních důvodů odesílá hlavičku X-Frame-Options: SAMEORIGIN
, která říká, že
stránku lze zobrazit uvnitř jiné stránky (v elementu <iframe>
) pouze pokud se nachází na stejné
doméně. To může být v některých situacích nežádoucí (například pokud vyvíjíte aplikaci pro Facebook), chování
lze proto změnit nastavením frames: http://allowed-host.com
nebo frames: true
.
Content Security Policy
Snadno lze sestavovat hlavičky Content-Security-Policy
(dále CSP), jejich popis najdete v popisu CSP. CSP direktivy (jako např. script-src
) mohou být zapsány
buď jako řetězce dle specifikace, nebo jako pole hodnot kvůli lepší čitelnosti. Pak není potřeba kolem klíčových slov,
jako třeba 'self'
, psát uvozovky. Nette také automaticky vygeneruje hodnotu nonce
, takže
v hlavičce bude třeba 'nonce-y4PopTLM=='
.
V šablonách používejte <script n:nonce>...</script>
a hodnota nonce se doplní automaticky.
Dělat bezpečné weby v Nette je opravdu snadné.
Podobně lze sestavit i hlavičky Content-Security-Policy-Report-Only
(které lze používat souběžně s CSP)
a Feature Policy:
HTTP cookie
Lze změnit vychozí hodnoty některých parametrů metody Nette\Http\Response::setCookie() a session.
Atribut cookieDomain
určuje, které domény mohou cookie přijímat. Není-li uveden, cookie přijímá stejná
(sub)doména, jako ji nastavila, ale nikoliv její subdomény. Pokud je cookieDomain
zadaný, jsou zahrnuty
i subdomény. Proto je uvedení cookieDomain
méně omezující než vynechání.
Například při cookieDomain: nette.org
jsou cookies dostupné i na všech subdoménách jako
doc.nette.org
. Téhož lze dosáhnout také pomocí speciální hodnoty domain
, tedy
cookieDomain: domain
.
Výchozí hodnota auto
u atributu cookieSecure
znamená, že pokud web běží na HTTPS, budou se
cookies odesílat s příznakem Secure
a tedy budou dostupné pouze přes HTTPS.
HTTP proxy
Pokud web běží za HTTP proxy, zadejte její IP adresu, aby správně fungovala detekce spojení přes HTTPS a také IP
adresy klienta. Tedy aby funkce Nette\Http\Request::getRemoteAddress() a isSecured() vracely správné hodnoty a v šablonách se generovaly odkazy s
https:
protokolem.
Session
Základní nastavení sessions:
Volba autoStart
řídí, kdy se má startovat session. Hodnota always
znamená, že se session
spustí vždy se spuštěním aplikace. Hodnota smart
znamená, že session se spustí při startu aplikace pouze
tehdy, pokud již existuje, nebo ve chvíli, z ní chceme číst nebo do ní zapisovat. A nakonec hodnota never
zakazuje automatický start session.
Dále lze nastavovat všechny PHP session direktivy (ve formátu camelCase) a také readAndClose. Příklad:
Session cookie
Session cookie se odesílá se stejnými parametry jako jiné cookie, ale tyto můžete pro ni změnit:
Atribut cookieSamesite
ovlivňuje, zda bude cookie odeslaná při přístupu z jiné domény, což poskytuje určitou ochranu
před útoky Cross-Site Request Forgery
(CSRF).
Služby DI
Tyto služby se přidávají do DI kontejneru:
Název | Typ | Popis |
---|---|---|
http.request |
Nette\Http\Request | HTTP request |
http.response |
Nette\Http\Response | HTTP response |
session.session |
Nette\Http\Session | správa session |