Přeskočit na obsah

Jak Vibescan funguje

Spousta lidí dnes staví aplikace přes "vibe coding" — píšeš AI co chceš a ono to napíše za tebe. Je to skvělý způsob, jak rychle prototypovat. Problém je, že AI často zapomíná na bezpečnost. A ty nevíš, co ti chybí, protože jsi to nikdy nemusel řešit.

Vibescan ti dá rychlý přehled o tom, co je viditelné zvenčí — bez nutnosti přístupu ke kódu.

Co Vibescan dělá
  • Pasivní audit veřejně dostupných informací
  • Kontrola HTTP hlaviček, SSL, DNS a HTML
  • Konkrétní skóre a návody na opravu
  • Sdílitelný odkaz na výsledky
Co Vibescan nedělá
  • Nejedná se o penetrační test
  • Nekontrolujeme zdrojový kód aplikace
  • Netestujeme SQL injection, XSS ani IDOR
  • Nezaručujeme 100% bezpečnost

Co konkrétně kontrolujeme

HTTP Security Headers
Kontrolujeme přítomnost a správné nastavení bezpečnostních hlaviček: HSTS, Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy a Permissions-Policy. Chybějící hlavičky jsou nejčastější problém vibecoded projektů — AI je málokdy přidá automaticky.
SSL & HTTPS
Ověříme, že web běží na HTTPS a správně přesměrovává HTTP požadavky. Bez HTTPS je veškerá komunikace nešifrovaná a zranitelná vůči odposlouchávání.
DNS záznamy (SPF, DMARC, DKIM)
Kontrolujeme emailové DNS záznamy, které chrání tvou doménu před spoofingem a phishingem. Ověříme SPF, DMARC (včetně síly politiky p=none vs p=reject) a DKIM přes běžné selektory.
HTML analýza
Parsujeme HTML stránky a hledáme typické chyby: odkazy s target="_blank" bez rel="noopener" (reverse tabnabbing útok), HTML komentáře obsahující TODO, hesla, API klíče nebo debug poznámky.
Tech leakage
Detekujeme prozrazení technologického stacku přes HTTP hlavičky — X-Powered-By, Server verze a podobně. Útočníci tyto informace využívají k cílení známých zranitelností.
Citlivé soubory
Kontrolujeme veřejnou dostupnost souborů, které by neměly být přístupné zvenčí. Testujeme pouze existenci (HTTP HEAD, status code) — obsah souborů nečteme.
  • · .env — proměnné prostředí (hesla, API klíče, DB credentials)
  • · .env.backup — záloha .env se stejnými secrets
  • · .git/config — konfigurace git repozitáře (umožňuje stáhnout zdrojový kód)
  • · .DS_Store — macOS metadata prozrazující strukturu adresářů
  • · phpinfo.php — verze PHP, cesty, rozšíření, konfigurace serveru
  • · server-status — Apache status page s aktivními requesty a IP klientů
  • · wp-config.php.bak — záloha WordPress konfigurace s DB přístupy
  • · .svn/entries — SVN metadata umožňující stáhnout zdrojový kód

Toto není vyčerpávající seznam — pokrývá nejčastější chyby vibecoded projektů. Připravujeme aktivní probing těchto souborů pro ověřené weby — podívejte se, co chystáme.

security.txt
Kontrolujeme přítomnost souboru security.txt (RFC 9116) na /.well-known/security.txt. Tento soubor říká bezpečnostním výzkumníkům, kam hlásit nalezené zranitelnosti.
Základní přístupnost
Kontrolujeme vybrané signály přístupnosti webu: přítomnost odkazu pro přeskočení navigace (skip link) pro uživatele klávesnice a hlasových čteček, a respektování systémového nastavení prefers-reduced-motion pro uživatele s vestibulárními potížemi nebo epilepsií. Pokud tyto prvky nenajdeme, upozorníme — ale doporučujeme ověřit i další stránky webu.
Právní náležitosti
Hledáme základní právní prvky vyžadované českým a evropským právem: mechanismus pro souhlas s cookies (cookie consent lišta), odkaz na stránku ochrany osobních údajů (GDPR) a copyright v patičce. Nekontrolujeme IČO ani adresu provozovatele — tyto údaje bývají na podstránkách, kam se pasivním skenem nedostaneme. Pokud něco nenajdeme, neznamená to porušení zákona — pouze doporučujeme zkontrolovat.
Kontrola závislostí (CVE)
Vložte obsah souboru se závislostmi a zkontrolujeme každý balíček proti databázi známých zranitelností. Automaticky rozpoznáme formát souboru (requirements.txt, package.json, composer.json), extrahujeme názvy a verze balíčků a dotážeme se OSV.dev API. Pro každou nalezenou zranitelnost zobrazíme identifikátor, závažnost podle CVSS skóre, popis a opravenou verzi — pokud existuje.
  • · Databáze: OSV.dev (osv.dev) — open-source agregátor zranitelností provozovaný Googlem
  • · Zdroje dat: NVD (NIST), GitHub Security Advisories, PyPI Advisory, npm Advisory, RustSec, Go Vulnerability Database a další
  • · Ekosystémy: PyPI (Python), npm (Node.js), Packagist (PHP) — další plánujeme
  • · API: OSV.dev querybatch endpoint — jeden hromadný dotaz na všechny závislosti najednou
  • · Závažnost: CVSS v3 skóre — Critical (≥9.0), High (≥7.0), Medium (≥4.0), Low (<4.0)
  • · Aktuálnost: OSV.dev se aktualizuje průběžně, ale u některých CVE může být zpoždění — datum poslední aktualizace zobrazujeme u výsledků
  • · Omezení: kontrolujeme pouze přímé závislosti s uvedenou verzí — tranzitivní závislosti (sub-dependencies) nezachytíme

Našli jsme zranitelné balíčky? Podívejte se do průvodce opravami pro konkrétní kroky jak je aktualizovat.

Co bys měl zkontrolovat sám

Vibescan kontroluje jen to, co je viditelné zvenčí. Následující věci musíš ověřit ve svém kódu. Pokud stavíš s AI (Claude Code, Cursor, Copilot), řekni mu ať to zkontroluje — ale pak to ověř sám.

Validace vstupů

Validace a sanitizace všech uživatelských vstupů na backendu — nikdy nedůvěřuj datům z frontendu
Validace na frontendu slouží pouze pro UX, ne jako bezpečnostní opatření
Kontrola typů, délky, formátu a povolených hodnot u každého vstupu
Ochrana proti SQL Injection — používej ORM nebo parametrizované dotazy, nikdy string concatenation

Autentizace a autorizace

IDOR (Insecure Direct Object Reference) — nikdy nebrat ID uživatele z URL parametrů, vždy ze session
Hashování hesel (bcrypt, argon2) — nikdy neukládat plaintext
Session cookies: HttpOnly, Secure, SameSite=Strict
Rate limiting na login a registraci — ochrana proti brute force útokům
Middleware pro ověření autentizace na chráněných routách

API bezpečnost

Rate limiting na všech API endpointech — ochrana proti DDoS a zneužití
Security a authorization headers na každém requestu
CORS správně nastavený — žádné wildcard (*) v produkci
IP block list pro veřejné API endpointy
Rozlišení CRUD routes vs. server actions — ne všechno patří do API
Limity na velikost souborů při uploadu

Secrets a konfigurace

API klíče nikdy v klientském kódu (hardcoded) — vždy server-side
Secrets v .env souboru, .env v .gitignore
.env.example s placeholder hodnotami pro tým
DEBUG=False v produkci, vlastní error stránky (404, 500) bez stack trace
Všechny debug logy odstraněné před deployem

HTTP a transport

Security headers: HSTS, CSP, X-Frame-Options, X-Content-Type-Options
Security middleware (Django SecurityMiddleware, Helmet pro Node.js)
HTTPS vynucené, HTTP přesměrováno
Secure cookies v produkci

Automatizované kontroly

Připoj Snyk nebo Semgrep na GitHub repozitář — automatické skeny při každém PR
Projdi OWASP Top 10 a ověř ochranu proti každé zranitelnosti
Minimálně dvě větve (development + main) — nikdy nepushuj rovnou na main
Před každým commitem spusť build a zkontroluj chyby
Tip pro vibecoded projekty

Po každé větší implementaci commitni a pushni kód, aby proběhly automatizované kontroly (Snyk, Semgrep). Pak teprve pokračuj na další část. Měj minimálně dvě větve — development a main. Před commitem vždy spusť build a ověř, že vše funguje.