Odporúčané sanitačné knižnice

Odporúčania pre sanitizačné a validačné knižnice pre webové aplikácie. Prehľad odporúčaných postupov a knižníc pre PHP, Python, JavaScript / Node.js, Java, Ruby, Go a .NET.

Verzia 1.0 · Vydané 28. 9. 2026

Právne upozornenie a povaha dokumentu

Nezáväzné odporúčanie. Tento dokument nie je bezpečnostným auditom, penetračným testom, certifikáciou ani právnym poradenstvom.

1. Povaha dokumentu. Tento dokument je nezáväzným informatívnym odporúčaním, ktoré spoločnosť NetHost poskytuje zákazníkom ako pomoc pri zabezpečovaní ich vlastných webových aplikácií. Nie je súčasťou zmluvy ani služby spoločnosti NetHost.

2. Zodpovednosť zákazníka. Za návrh, vývoj, konfiguráciu, aktualizácie a bezpečnosť svojej aplikácie aj údajov v nej zodpovedá výhradne zákazník, prípadne jeho dodávateľ.

3. Bez záruky. Odporúčanie zodpovedá stavu poznania ku dňu vydania uvedenému v záhlaví. Knižnice, ich verzie a známe zraniteľnosti sa priebežne menia.

4. Obmedzenie zodpovednosti. Spoločnosť NetHost nezodpovedá za škodu, ktorá zákazníkovi alebo tretím osobám vznikne použitím alebo nepoužitím tohto odporúčania, okrem prípadov, keď ju spôsobila úmyselne alebo z hrubej nedbanlivosti.

5. Knižnice tretích strán. Uvedené knižnice sú produktmi ich autorov a ich uvedenie neznamená, že ich spoločnosť NetHost dodáva, podporuje alebo za ne ručí.

6. Súvislosť s reguláciou. Správna sanitizácia vstupov a výstupov je jedným z technických opatrení, ktoré môžu od zákazníka vyžadovať právne predpisy.

  • GDPR, čl. 25 a čl. 32.
  • NIS2 a zákon č. 264/2025 Zb. o kybernetickej bezpečnosti.
  • ISO/IEC 27001 – opatrenie A.8.28.
  • DORA – oblasť riadenia rizík IKT.

1. Prečo sanitizácia a validácia

Väčšina úspešných útokov na webové aplikácie (SQL injection, XSS, path traversal, header injection) má rovnakú príčinu: údaje od používateľa sa dostanú do iného kontextu bez toho, aby boli správne ošetrené.

Validácia vstupu. Hneď po prijatí over typ, formát, dĺžku a rozsah údajov. Používaj allowlist.

Escapovanie výstupu. Údaje prevádzaj podľa konkrétneho cieľového kontextu – HTML, JavaScript, URL, CSS, SQL alebo shell.

Oddelenie údajov od kódu. Používaj parametrizované dotazy, automatické escapovanie a API namiesto shellu.

Základný princíp: validuj vstup, escapuj výstup podľa kontextu.

2. Všeobecné zásady

  • Validáciu vykonávaj vždy na serveri. Validácia v prehliadači slúži len na pohodlie používateľa.
  • Používaj allowlist – povolené hodnoty, regulárny výraz pre celý reťazec alebo výčtový typ.
  • SQL dotazy zostavuj výhradne pomocou parametrov (prepared statements).
  • Používaj šablónovací systém so zapnutým automatickým escapovaním.
  • HTML od používateľov čistite pomocou udržiavanej HTML sanitizačnej knižnice s allowlistom značiek a atribútov.
  • Cesty k súborom nezostavuj z používateľského vstupu.
  • Do HTTP hlavičiek nevkladaj neoverené údaje.
  • Cookies nastavuj s atribútmi Secure, HttpOnly a SameSite.
  • Používaj ochranu CSRF poskytovanú frameworkom.
  • Nedeserializuj nedôveryhodné údaje pomocou natívnych formátov.
  • Knižnice udržiavaj aktuálne a sleduj bezpečnostné upozornenia.
  • Nepoužívaj knižnice, ktoré ich autori označili za zastarané.

3. Odporúčania podľa jazyka

Verzie uvedené pri knižniciach sú posledné stabilné vydania overené v oficiálnych registroch balíčkov ku dňu 28. 9. 2026.

PHP

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovfilter_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é escapovanie 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 súboromrealpath(), kontrola základnej cesty, basename().–
HTTP hlavičkyheader(); validácia CR/LF.paragonie/csp-builder 3.1.0
bepsvpt/secure-headers 9.1.1

Python

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovTypové anotácie, Django Forms, nepoužívať pickle na nedôveryhodné údaje.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
SQLParametre odovzdávaj samostatne, nikdy nie pomocou f-string.psycopg 3.3.6
SQLAlchemy 2.1.1
Django ORM
Cesty k súborompathlib.Path(...).resolve() a kontrola základnej cesty.Werkzeug 3.1.9 – safe_join()

JavaScript / Node.js

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovTypy v TypeScripte nestačia – je potrebná validácia za behu.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é escapovanie; textContent namiesto innerHTML.DOMPurify 3.4.16
isomorphic-dompurify 4.4.0
sanitize-html 2.17.7
SQLParametrizované dotazy cez pg alebo mysql2.pg 8.23.0
mysql2 3.24.4
knex 3.3.0
sequelize 6.37.8
prisma 7.10.0
Cesty k súborompath.resolve() + kontrola základnej cesty.–
HTTP hlavičkysetHeader()helmet 8.3.0

Java

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovJakarta Bean Validation: @NotNull, @Size, @Pattern, @Email.jakarta.validation-api 3.1.1
Hibernate Validator 9.1.4.Final
Výstupy a XSSAutomatické escapovanie 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

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovActiveModel/ActiveRecord; Strong Parameters.activerecord 8.1.4
dry-validation 1.11.1
Výstupy a XSSRails ERB automaticky escapuje výstup.rails-html-sanitizer 1.7.1
loofah 2.25.2
sanitize 7.0.0
SQLActiveRecord s parametrami.sequel 5.108.0

Go

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovstrconv, net/mail, net/url.go-playground/validator v10.30.5
Výstupy a XSShtml/template; nikdy nepoužívaj text/template pre HTML.microcosm-cc/bluemonday v1.0.27
SQLdatabase/sql so zástupnými parametrami.jackc/pgx v5.11.0
go-sql-driver/mysql v1.10.1
gorm.io/gorm v1.31.2

.NET (C# / ASP.NET Core)

OblasťVstavané funkcie / postupOdporúčané knižnice
Validácia vstupovDataAnnotations a ModelState.IsValid.FluentValidation 12.1.1
Výstupy a XSSRazor automaticky kóduje výstup; vyhýbaj sa Html.Raw().HtmlSanitizer 9.2.1039
SQLADO.NET SqlCommand s parametrami.Microsoft.EntityFrameworkCore 10.0.12
Dapper 2.1.89

4. Príkazy OS (command injection)

Ak je to možné, externé príkazy vôbec nespúšťaj a použi knižnicu alebo API daného jazyka. Ak je spustenie nevyhnutné, odovzdávaj argumenty samostatne, bez shellu, a ich hodnoty validuj pomocou allowlistu.

JazykOdporúčaný postup
PHPVyhýbaj sa shellu. Ak musíš volať exec() alebo shell_exec(), každý argument ošetri pomocou escapeshellarg().
Pythonsubprocess.run(["prikaz", arg1, arg2]); nikdy nepoužívaj shell=True s používateľským vstupom.
Node.jschild_process.execFile() alebo spawn() bez shellu.
JavaProcessBuilder so zoznamom argumentov.

5. Zastarané a neodporúčané knižnice

KnižnicaStavNáhrada
bleach (Python) 6.4.0Zastaraná a už sa neudržiava.nh3
csurf (npm) 1.11.0Archivovaná, neudržiavaná.Ochrana CSRF poskytovaná frameworkom
xss-clean (npm) 0.1.4Balík už nie je podporovaný.Validácia + escapovanie výstupu, DOMPurify
AntiXSS (NuGet) 4.3.0Posledné vydanie 2. 6. 2014.System.Text.Encodings.Web, HtmlSanitizer
NWebsec.AspNetCore.Middleware 3.0.0Posledné vydanie 13. 1. 2020.NetEscapades.AspNetCore.SecurityHeaders
flask-talisman 1.1.0Bez aktivity od roku 2023.Nastavenie hlavičiek v aplikácii alebo na webovom serveri
microcosm-cc/bluemondayObmedzená údržba.Sledujte stav projektu.

6. Odkazy

Nezáväzné odporúčanie spoločnosti NetHost, verzia 1.0 z 28. 9. 2026. Nejde o záruku ani o súčasť služby. Za aplikáciu zodpovedá zákazník podľa zmluvy a VOP spoločnosti NetHost.