Tento článek patří do seriálu Security headers. Ostatní články seriálu:
- Security headers - Co jsou a jak na ně
- HTTPS nestačí, jak na HSTS a HPKP
- Bezpečnost a expirace sessions v PHP
- Content Security Policy
- Report URI - Správce reportů z prohlížeče
V předchozích článcích seriálu bylo popsáno několik bezpečnostních hlaviček, jak je implementovat a jaké pravidla vynucují. O porušení některých z těchto pravidel nyní dokáže prohlížeč notifikovat sám, bez knihoven třetích stran! Počet těchto reportů ale může být dosti velký, převážně na vytížených webech. Proto se hodí použít službu, jako je Report-URI.
Jedna HTTP hlavička vládne všem
Základem je hlavička Report-To, která obsahuje data v JSON formátu. Je zde název skupiny, její URL a pár dalších. Těchto JSON záznamů může obsahovat více, stačí je oddělit čárkou. Na adresu ve skupině default budou odesílány všechny reporty o deprecated funkcionalitě, pádech prohlížečů nebo jiném zásahu proti response. Na to se dá navázat další hlavička Network Error Logging, která dokáže reportovat o HTTP chybách. Response headers můžou vypadat asi takto:
Report-To: {
"group":"default",
"max_age":31536000,
"endpoints":[{"url":"https://YourDomain.report-uri.com/a/d/g"}]
},{ "group":"cspEndpoint", "max_age":31536000, "endpoints":[{"url":"https://YourDomain.report-uri.com/r/d/csp/enforce"}] }
Content-Security-Policy: ...;
report-uri https://YourDomain.report-uri.com/r/d/csp/enforce;
report-to cspEndpoint
NEL: {"report_to":"default","max_age":2678400,"include_subdomains":true}
Hlavička je nyní (červenec 2020) podporována pouze v Edge a Chrome. Viz can I use.com proto u CSP je kromě report-to i starší report-uri, které má větší podporu.
Proč Report-URI, nestačí Sentry?
V předchozím článku jsem zmiňoval Sentry, které řeší programové chyby. U kolegy vznikla otázka, jestli potřebuji Sentry i Report-URI? A ano. Sentry sbírá JavaScriptové chyby z frontendu, zatímco Report-URI zpracovává chyby, které by se pomocí JS vůbec nedaly odchytit.
Na druhou stranu, Sentry už nyní dokáže přijímat reporty z Content-Security-Policy, takže pokud stačí sběr CSP a JS chyb, Report-URI potřeba není. Já ho ale využívám kvůli tomu, co umí navíc. A taky proto, že na jeho vývoji pracuje Michal Špaček, u kterého jsem byl na školení. O Report-URI psal na svém webu, jak hned po nástupu smazal přes milión řádků kódu.
Osobní zkušenosti můžete sdílet v komentářích. Obrázek převzat z Freepik
K tomuto článku již není možné přidávat další komentáře