{$message}
``` Zápis `{$message}` znamená vypsání proměnné. V jiných frameworcích je nutné každé vypsání explicitně ošetřit a dokonce na každém místě jinak. V Nette Framework není potřeba ošetřovat nic, vše se udělá automaticky, správně a důsledně. Pokud dosadíme do proměnné `$message = 'Šířka 1/2"'`, framework vygeneruje HTML kód: ```latteŠířka 1/2"
``` Cross-Site Request Forgery (CSRF) ================================= Útok Cross-Site Request Forgery spočívá v tom, že útočník naláká oběť na stránku, která nenápadně v prohlížeči oběti vykoná požadavek na server, na kterém je oběť přihlášena, a server se domnívá, že požadavek vykonala oběť o své vůli. A tak pod identitou oběti provede určitý úkon, aniž by ta o tom věděla. Může jít o změnu nebo smazání dat, odeslání zprávy atd. Nette Framework **automaticky chrání formuláře a signály v presenterech** před tímto typem útoku. A to tím, že zabraňuje jejich odeslání či vyvolání z jiné domény. Pokud chcete ochranu vypnout, použijte u formulářů: ```php $form->allowCrossOrigin(); ``` nebo v případě signálu přidejte anotaci `@crossOrigin`: ```php /** * @crossOrigin */ public function handleXyz() { } ``` V PHP 8 můžete použít také atributy: ```php use Nette\Application\Attributes\CrossOrigin; #[CrossOrigin] public function handleXyz() { } ``` URL attack, control codes, invalid UTF-8 ======================================== Různé pojmy související se snahou útočníka podstrčit vaší webové aplikaci *škodlivý* vstup. Následky mohou být velmi různorodé, od poškození XML výstupů (např. nefunkční RSS kanály) přes získání citlivých informací z databáze nebo hesel. Obranou je důsledné ošetřování všech vstupů na úrovni jednotlivých bajtů. A ruku na srdce, kdo z vás to dělá? Nette Framework to dělá za vás a navíc automaticky. Nemusíte nastavovat vůbec nic a všechny vstupy budou ošetřené. Session hijacking, session stealing, session fixation ===================================================== Se správou session je spojeno hned několik typů útoků. Útočník buď zcizí anebo podstrčí uživateli své session ID a díky tomu získá přístup do webové aplikace, aniž by znal heslo uživatele. Poté může v aplikaci provádět cokoliv, aniž by o tom uživatel věděl. Obrana spočívá ve správné konfiguraci serveru a PHP. Přičemž Nette Framework nakonfiguruje PHP automaticky. Programátor tak nemusí přemýšlet, kterak session správně zabezpečit a může se plně soustředit na tvorbu aplikace. Vyžaduje to však povolenou funkci `ini_set()`. SameSite cookie =============== SameSite cookies poskytují mechanismus jak rozpoznat, co vedlo k načtení stránky. Což je naprosto zásadní kvůli bezpečnosti. Příznak SameSite může mít tři hodnoty: `Lax`, `Strict` a `None` (ten vyžaduje HTTPS). Pokud požadavek na stránku přichází přímo z webu nebo uživatel otevře stránku přímým zadáním do adresního řádku nebo kliknutím na záložku, prohlížeč pošle serveru všechny cookies (tedy s příznaky `Lax`, `Strict` i `None`). Pokud se uživatel na web proklikne přes odkaz z jiného webu, předají se serveru cookies s příznaky `Lax` a `None`. Pokud požadavek vznikne jiným způsobem, jako je odeslání POST formuláře z jiného webu, načtení uvnitř iframe, pomocí JavaScriptu, atd., odešlou se jen cookies s příznakem `None`. Nette defaultně všechny cookie odesílá s příznakem `Lax`. {{leftbar: @menu-common}}