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,HttpOnlyaSameSite. - 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 / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | filter_var(), filter_input(), striktné typy. | symfony/validator 8.1.7 respect/validation 3.1.2 illuminate/validation 13.33.0 |
| Výstupy a XSS | htmlspecialchars(); 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 |
| SQL | PDO prepared statements; PDO::ATTR_EMULATE_PREPARES => false. | doctrine/dbal 4.5.0 doctrine/orm 3.7.2 Eloquent |
| Cesty k súborom | realpath(), kontrola základnej cesty, basename(). | – |
| HTTP hlavičky | header(); validácia CR/LF. | paragonie/csp-builder 3.1.0 bepsvpt/secure-headers 9.1.1 |
Python
| Oblasť | Vstavané funkcie / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | Typové 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 XSS | html.escape(); autoescape v Django/Jinja2. | Jinja2 3.1.6 MarkupSafe 3.0.3 nh3 0.3.7 |
| SQL | Parametre odovzdávaj samostatne, nikdy nie pomocou f-string. | psycopg 3.3.6 SQLAlchemy 2.1.1 Django ORM |
| Cesty k súborom | pathlib.Path(...).resolve() a kontrola základnej cesty. | Werkzeug 3.1.9 – safe_join() |
JavaScript / Node.js
| Oblasť | Vstavané funkcie / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | Typy 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 XSS | Automatické escapovanie; textContent namiesto innerHTML. | DOMPurify 3.4.16 isomorphic-dompurify 4.4.0 sanitize-html 2.17.7 |
| SQL | Parametrizované 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úborom | path.resolve() + kontrola základnej cesty. | – |
| HTTP hlavičky | setHeader() | helmet 8.3.0 |
Java
| Oblasť | Vstavané funkcie / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | Jakarta Bean Validation: @NotNull, @Size, @Pattern, @Email. | jakarta.validation-api 3.1.1 Hibernate Validator 9.1.4.Final |
| Výstupy a XSS | Automatické escapovanie v Thymeleaf/JSP. | OWASP Java Encoder 1.5.0 OWASP Java HTML Sanitizer 20260924.2 jsoup 1.23.2 |
| SQL | JDBC PreparedStatement; JPA/Hibernate. | Hibernate ORM 7.4.11.Final Spring Data JPA 4.1.1 |
Ruby
| Oblasť | Vstavané funkcie / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | ActiveModel/ActiveRecord; Strong Parameters. | activerecord 8.1.4 dry-validation 1.11.1 |
| Výstupy a XSS | Rails ERB automaticky escapuje výstup. | rails-html-sanitizer 1.7.1 loofah 2.25.2 sanitize 7.0.0 |
| SQL | ActiveRecord s parametrami. | sequel 5.108.0 |
Go
| Oblasť | Vstavané funkcie / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | strconv, net/mail, net/url. | go-playground/validator v10.30.5 |
| Výstupy a XSS | html/template; nikdy nepoužívaj text/template pre HTML. | microcosm-cc/bluemonday v1.0.27 |
| SQL | database/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 / postup | Odporúčané knižnice |
|---|---|---|
| Validácia vstupov | DataAnnotations a ModelState.IsValid. | FluentValidation 12.1.1 |
| Výstupy a XSS | Razor automaticky kóduje výstup; vyhýbaj sa Html.Raw(). | HtmlSanitizer 9.2.1039 |
| SQL | ADO.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.
| Jazyk | Odporúčaný postup |
|---|---|
| PHP | Vyhýbaj sa shellu. Ak musíš volať exec() alebo shell_exec(), každý argument ošetri pomocou escapeshellarg(). |
| Python | subprocess.run(["prikaz", arg1, arg2]); nikdy nepoužívaj shell=True s používateľským vstupom. |
| Node.js | child_process.execFile() alebo spawn() bez shellu. |
| Java | ProcessBuilder so zoznamom argumentov. |
5. Zastarané a neodporúčané knižnice
| Knižnica | Stav | Náhrada |
|---|---|---|
| bleach (Python) 6.4.0 | Zastaraná a už sa neudržiava. | nh3 |
| csurf (npm) 1.11.0 | Archivovaná, neudržiavaná. | Ochrana CSRF poskytovaná frameworkom |
| xss-clean (npm) 0.1.4 | Balík už nie je podporovaný. | Validácia + escapovanie výstupu, DOMPurify |
| AntiXSS (NuGet) 4.3.0 | Posledné vydanie 2. 6. 2014. | System.Text.Encodings.Web, HtmlSanitizer |
| NWebsec.AspNetCore.Middleware 3.0.0 | Posledné vydanie 13. 1. 2020. | NetEscapades.AspNetCore.SecurityHeaders |
| flask-talisman 1.1.0 | Bez aktivity od roku 2023. | Nastavenie hlavičiek v aplikácii alebo na webovom serveri |
| microcosm-cc/bluemonday | Obmedzená údržba. | Sledujte stav projektu. |
6. Odkazy
- OWASP Input Validation Cheat Sheet
- OWASP Cross Site Scripting Prevention Cheat Sheet
- OWASP SQL Injection Prevention Cheat Sheet
- OWASP OS Command Injection Defense Cheat Sheet
- OWASP Deserialization Cheat Sheet
- OWASP File Upload Cheat Sheet
- OWASP Path Traversal
- OWASP HTTP Headers Cheat Sheet
- OWASP Content Security Policy Cheat Sheet
- OWASP Top 10
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.