Doporučené sanitační knihovny

Doporučení sanitačních a validačních knihoven pro webové aplikace. Přehled doporučených postupů a knihoven pro PHP, Python, JavaScript / Node.js, Java, Ruby, Go a .NET.

Verze 1.0 · Vydáno 28. 9. 2026

Právní upozornění a povaha dokumentu

Nezávazné doporučení. Tento dokument není bezpečnostní audit, penetrační test, certifikace ani právní poradenství.

1. Povaha dokumentu. Tento dokument je nezávazné informativní doporučení, které NetHost poskytuje zákazníkům jako pomoc při zabezpečení jejich vlastních webových aplikací. Není součástí smlouvy ani služby NetHostu.

2. Odpovědnost zákazníka. Za návrh, vývoj, konfiguraci, aktualizace a bezpečnost své aplikace i dat v ní odpovídá výhradně zákazník, případně jeho dodavatel.

3. Bez záruky. Doporučení odpovídá stavu poznání ke dni vydání uvedenému v záhlaví. Knihovny, jejich verze a známé zranitelnosti se průběžně mění.

4. Omezení odpovědnosti. NetHost neodpovídá za škodu, která zákazníkovi nebo třetím osobám vznikne použitím nebo nepoužitím tohoto doporučení, ledaže ji způsobil úmyslně nebo z hrubé nedbalosti.

5. Knihovny třetích stran. Uvedené knihovny jsou produkty jejich autorů a jejich uvedení neznamená, že je NetHost dodává, podporuje nebo za ně ručí.

6. Vazba na regulaci. Správná sanitace vstupů a výstupů je jedním z technických opatření, která po zákazníkovi mohou vyžadovat právní předpisy.

  • GDPR, čl. 25 a čl. 32.
  • NIS2 a zákon č. 264/2025 Sb. o kybernetické bezpečnosti.
  • ISO/IEC 27001 – opatření A.8.28.
  • DORA – oblast řízení rizik ICT.

1. Proč sanitace a validace

Většina úspěšných útoků na webové aplikace (SQL injection, XSS, path traversal, header injection) má stejnou příčinu: data od uživatele se dostanou do jiného kontextu, aniž by byla správně ošetřena.

Validace vstupu. Ověř typ, formát, délku a rozsah dat hned po jejich přijetí. Používej allowlist.

Escapování výstupu. Data převáděj pro konkrétní cílový kontext – HTML, JavaScript, URL, CSS, SQL nebo shell.

Oddělení dat od kódu. Používej parametrizované dotazy, automatické escapování a API místo shellu.

Základní princip: validuj vstup, escapuj výstup podle kontextu.

2. Obecné zásady

  • Validaci prováděj vždy na serveru. Validace v prohlížeči slouží jen pro pohodlí uživatele.
  • Používej allowlist – povolené hodnoty, regulární výraz pro celý řetězec nebo výčet.
  • SQL dotazy skládej výhradně s parametry (prepared statements).
  • Používej šablonovací systém se zapnutým automatickým escapováním.
  • HTML od uživatelů čisti udržovaným HTML sanitizerem s allowlistem tagů a atributů.
  • Cesty k souborům nesestavuj z uživatelského vstupu.
  • Do HTTP hlaviček nevkládej neověřená data.
  • Cookies nastavuj s atributy Secure, HttpOnly a SameSite.
  • Použij CSRF ochranu frameworku.
  • Nedeserializuj nedůvěryhodná data nativními formáty.
  • Knihovny udržuj aktuální a sleduj bezpečnostní upozornění.
  • Nepoužívej knihovny, které autoři označili za zastaralé.

3. Doporučení podle jazyka

Verze uvedené u knihoven jsou poslední stabilní vydání ověřená v oficiálních registrech balíčků ke dni 28. 9. 2026.

PHP

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůfilter_var(), filter_input(), striktní typy.symfony/validator 8.1.7
respect/validation 3.1.2
illuminate/validation 13.33.0
Výstupy a XSShtmlspecialchars(); automatické escapování v Twig a Blade.twig/twig 3.30.0
laminas/laminas-escaper 2.18.0
ezyang/htmlpurifier 4.19.1
symfony/html-sanitizer 8.1.7
SQLPDO prepared statements; PDO::ATTR_EMULATE_PREPARES => false.doctrine/dbal 4.5.0
doctrine/orm 3.7.2
Eloquent
Cesty k souborůmrealpath(), kontrola báze, basename().–
HTTP hlavičkyheader(); validace CR/LF.paragonie/csp-builder 3.1.0
bepsvpt/secure-headers 9.1.1

Python

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůTypové anotace, Django Forms, nepoužívat pickle na nedůvěryhodná data.pydantic 2.13.5
marshmallow 4.3.1
jsonschema 4.26.0
email-validator 2.3.0
defusedxml 0.7.1
Výstupy a XSShtml.escape(); autoescape v Django/Jinja2.Jinja2 3.1.6
MarkupSafe 3.0.3
nh3 0.3.7
SQLParametry předávat zvlášť, nikdy f-string.psycopg 3.3.6
SQLAlchemy 2.1.1
Django ORM
Cesty k souborůmpathlib.Path(...).resolve() a kontrola báze.Werkzeug 3.1.9 – safe_join()

JavaScript / Node.js

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůTypeScript typy nestačí – nutná runtime validace.zod 4.6.5
joi 18.2.9
ajv 8.20.0
validator 13.15.35
express-validator 7.3.2
Výstupy a XSSAutomatické escapování; textContent místo innerHTML.DOMPurify 3.4.16
isomorphic-dompurify 4.4.0
sanitize-html 2.17.7
SQLParametrizované dotazy přes pg nebo mysql2.pg 8.23.0
mysql2 3.24.4
knex 3.3.0
sequelize 6.37.8
prisma 7.10.0
Cesty k souborůmpath.resolve() + kontrola báze.–
HTTP hlavičkysetHeader()helmet 8.3.0

Java

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůJakarta Bean Validation: @NotNull, @Size, @Pattern, @Email.jakarta.validation-api 3.1.1
Hibernate Validator 9.1.4.Final
Výstupy a XSSAutomatické escapování v Thymeleaf/JSP.OWASP Java Encoder 1.5.0
OWASP Java HTML Sanitizer 20260924.2
jsoup 1.23.2
SQLJDBC PreparedStatement; JPA/Hibernate.Hibernate ORM 7.4.11.Final
Spring Data JPA 4.1.1

Ruby

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůActiveModel/ActiveRecord; Strong Parameters.activerecord 8.1.4
dry-validation 1.11.1
Výstupy a XSSRails ERB escapuje automaticky.rails-html-sanitizer 1.7.1
loofah 2.25.2
sanitize 7.0.0
SQLActiveRecord s parametry.sequel 5.108.0

Go

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůstrconv, net/mail, net/url.go-playground/validator v10.30.5
Výstupy a XSShtml/template; nikdy text/template pro HTML.microcosm-cc/bluemonday v1.0.27
SQLdatabase/sql se zástupnými parametry.jackc/pgx v5.11.0
go-sql-driver/mysql v1.10.1
gorm.io/gorm v1.31.2

.NET (C# / ASP.NET Core)

OblastVestavěné funkce / postupDoporučené knihovny
Validace vstupůDataAnnotations a ModelState.IsValid.FluentValidation 12.1.1
Výstupy a XSSRazor automaticky kóduje výstup; vyhýbat se Html.Raw().HtmlSanitizer 9.2.1039
SQLADO.NET SqlCommand s parametry.Microsoft.EntityFrameworkCore 10.0.12
Dapper 2.1.89

4. Příkazy OS (command injection)

Pokud to jde, externí příkazy vůbec nespouštěj a použij knihovnu nebo API jazyka. Když je spuštění nutné, předávej argumenty odděleně, bez shellu, a jejich hodnoty validuj allowlistem.

JazykDoporučený postup
PHPShellu se vyhni. Pokud musíš volat exec() nebo shell_exec(), každý argument ošetři escapeshellarg().
Pythonsubprocess.run(["prikaz", arg1, arg2]); nikdy shell=True s uživatelským vstupem.
Node.jschild_process.execFile() nebo spawn() bez shellu.
JavaProcessBuilder se seznamem argumentů.

5. Zastaralé a nedoporučené knihovny

KnihovnaStavNáhrada
bleach (Python) 6.4.0Zastaralá a již není udržována.nh3
csurf (npm) 1.11.0Archivováno, neudržováno.CSRF ochrana frameworku
xss-clean (npm) 0.1.4Package no longer supported.Validace + escapování výstupu, DOMPurify
AntiXSS (NuGet) 4.3.0Poslední vydání 2. 6. 2014.System.Text.Encodings.Web, HtmlSanitizer
NWebsec.AspNetCore.Middleware 3.0.0Poslední vydání 13. 1. 2020.NetEscapades.AspNetCore.SecurityHeaders
flask-talisman 1.1.0Bez aktivity od roku 2023.Nastavení hlaviček v aplikaci nebo webserveru
microcosm-cc/bluemondayOmezená údržba.Sledujte stav projektu.

6. Odkazy

Nezávazné doporučení NetHost, verze 1.0 ze dne 28. 9. 2026. Nejde o záruku ani o součást služby. Odpovědnost za aplikaci nese zákazník podle smlouvy a VOP NetHost.