---
title: "Bezpečný provoz webu: kontrolní seznam pro lidi i AI agenty | Vrealmatic"
description: "Kontrolní seznam bezpečnosti webu pro lidi i AI agenty: HTTPS, hlavičky, DNS a e-mail, úniky, účty, kód, server, zálohy. Kontrola zvenku, zevnitř i oprava jako služba."
url: https://vrealmatic.com/webove-sluzby/bezpecnost
lang: cs
alternates:
  en: https://vrealmatic.com/web/security
source: content
---

# Bezpečný provoz webu

**Kontrolní seznam pro lidi i AI agenty. Kontrola zvenku, zevnitř a oprava.**

Jedna stránka, podle které web zkontrolujete sami, svěříte ho AI agentovi, nebo nám. Každý bod říká, co má platit, jak to ověřit a kdy je hotovo.

*00 · Jak stránku použít*

## Tři cesty ke stejnému výsledku

Seznam je stejný pro všechny. Liší se jen to, kdo ho projde.

1. **Projdu to sám** (Sami) – Body jsou seřazené podle oblastí. U každého je příkaz nebo nástroj k ověření. → Kontrolní seznam
2. **Svěřím to AI agentovi** (AI agent) – Pošlete agentovi adresu stránky a jeden z připravených promptů. Mantinely a formát výstupu jsou součástí seznamu. → Prompty pro agenta
3. **Svěřím to vám** (Služba) – Kontrola zvenku, zevnitř, nebo rovnou s opravou. Přístup převezmeme jen na dobu práce. → Varianty služby

Pro AI agenty je stránka i v čistém textu (markdown): [https://vrealmatic.com/webove-sluzby/bezpecnost.md](https://vrealmatic.com/webove-sluzby/bezpecnost.md)

*01 · Zvenku a zevnitř*

## Zvenku vidíte to, co útočník. Zevnitř to, kudy se k webu dostane.

Vnější kontrole stačí adresa webu. Vnitřní potřebuje přístup, ale odhalí slabiny, které zvenku vidět nejsou.

|  | Zvenku | Zevnitř |
| --- | --- | --- |
| **Co potřebuje** | Jen adresu webu. | Přístup jen pro čtení: účty, repozitář, server. |
| **Z čího pohledu** | Útočníka, který o webu nic neví. | Správce, který vidí nastavení. |
| **Co odhalí** | Šifrování, bezpečnostní hlavičky, DNS a e-mail, veřejně dostupné soubory, cookies. | Účty a 2FA, práva a API tokeny, závislosti, tajné klíče v kódu, server, zálohy. |
| **Co neodhalí** | Bývalého kolegu s platným přístupem, nefunkční zálohu, zastaralý plugin v administraci. | Nic navíc. Vnitřní kontrola zahrnuje i všechny body zvenku. |
| **Kdo ji udělá** | Kdokoli, i AI agent jen s přístupem na web. | Vy, AI agent v repozitáři webu, nebo my s vaším svolením. |

> Útočník často nepotřebuje chytrý útok. Stačí mu uniklé heslo bez 2FA, zapomenutý plugin nebo klíč v repozitáři. Právě tyhle body zvenku vidět nejsou.

*02 · Kontrolní seznam*

## Kontrolní seznam bezpečného provozu

Každý bod má kód, rozsah a závažnost. Body zvenku ověříte jen s adresou webu, body zevnitř potřebují přístup. Místo vas-web.cz dosaďte svou doménu.

| Oblast | Zvenku | Zevnitř |
| --- | --- | --- |
| HTTPS a šifrování | 4 | 1 |
| Bezpečnostní hlavičky | 5 | – |
| Veřejné soubory a úniky | 6 | – |
| Doména, DNS a e-mail | 5 | 1 |
| Formuláře a vstupy | 1 | 3 |
| Účty, přihlášení a práva | 1 | 4 |
| Cookies a relace | 2 | – |
| Kód a závislosti | 1 | 4 |
| Server, hosting a CDN | – | 4 |
| Zálohy a obnova | – | 3 |
| Monitoring a reakce | 1 | 3 |

Závažnost: **vysoká** = opravit hned, **střední** = do měsíce, **nízká** = při příští údržbě.

### HTTPS a šifrování

Šifrované spojení chrání přihlášení, formuláře i obsah před odposlechem a podvržením.

#### TLS-1 · zvenku · závažnost: vysoká

Web běží jen na HTTPS a HTTP trvale přesměruje na HTTPS.

- **Jak ověřit:** `curl -sI http://vas-web.cz` a totéž pro variantu s www.
- **V pořádku, když:** Odpověď 301 nebo 308 s `Location: https://…` u všech variant domény.

#### TLS-2 · zvenku · závažnost: vysoká

Certifikát je platný, pokrývá všechny varianty domény a obnovuje se automaticky.

- **Jak ověřit:** [SSL Labs](https://www.ssllabs.com/ssltest/) nebo `openssl s_client -connect vas-web.cz:443 -servername vas-web.cz`
- **V pořádku, když:** Certifikát odpovídá doméně i www, prohlížeč nehlásí chybu, obnova nevyžaduje ruční zásah.

#### TLS-3 · zvenku · závažnost: střední

Server nabízí jen TLS 1.2 a 1.3.

- **Jak ověřit:** [SSL Labs](https://www.ssllabs.com/ssltest/), část Configuration.
- **V pořádku, když:** TLS 1.0 a 1.1 jsou vypnuté, hodnocení A nebo A+.

#### TLS-4 · zvenku · závažnost: střední

Odpověď posílá hlavičku HSTS.

- **Jak ověřit:** `curl -sI https://vas-web.cz`, hledejte `Strict-Transport-Security`.
- **V pořádku, když:** `max-age` aspoň 31536000 (rok). `preload` jen po ověření, že všechny subdomény umí HTTPS.

#### TLS-5 · zevnitř · závažnost: vysoká

Spojení mezi CDN a serverem je také šifrované a ověřené.

- **Jak ověřit:** V Cloudflare: SSL/TLS → Overview. U jiné CDN obdobné nastavení originu.
- **V pořádku, když:** Režim **Full (strict)**. Režim Flexible posílá data k serveru nešifrovaně.

### Bezpečnostní hlavičky

Hlavičky říkají prohlížeči, co smí stránka načíst a jak se smí zobrazit. Brání vložení cizího skriptu a podvržení stránky v rámu.

#### HDR-1 · zvenku · závažnost: střední

Stránka má Content-Security-Policy.

- **Jak ověřit:** [Mozilla HTTP Observatory](https://developer.mozilla.org/en-US/observatory) nebo `curl -sI https://vas-web.cz`
- **V pořádku, když:** Politika existuje, omezuje zdroje skriptů a obsahuje `frame-ancestors`. Bez `unsafe-inline` u skriptů, kde to jde.

#### HDR-2 · zvenku · závažnost: střední

Stránku nejde vložit do cizího webu (ochrana proti clickjackingu).

- **Jak ověřit:** Hlavička `frame-ancestors` v CSP nebo `X-Frame-Options`.
- **V pořádku, když:** `frame-ancestors 'self'` nebo `'none'`, případně `X-Frame-Options: DENY`.

#### HDR-3 · zvenku · závažnost: nízká

Prohlížeč nehádá typ souborů.

- **Jak ověřit:** Hlavička `X-Content-Type-Options`.
- **V pořádku, když:** `X-Content-Type-Options: nosniff`

#### HDR-4 · zvenku · závažnost: nízká

Web neposílá celou adresu jiným webům a omezuje přístup k funkcím zařízení.

- **Jak ověřit:** Hlavičky `Referrer-Policy` a `Permissions-Policy`.
- **V pořádku, když:** `strict-origin-when-cross-origin` nebo přísnější. Kamera, mikrofon a poloha vypnuté, pokud je web nepotřebuje.

#### HDR-5 · zvenku · závažnost: nízká

Odpovědi neprozrazují software a jeho verze.

- **Jak ověřit:** Hlavičky `Server`, `X-Powered-By`, meta značka `generator`.
- **V pořádku, když:** Bez čísel verzí. Útočník podle nich hledá známé zranitelnosti.

### Veřejné soubory a úniky

Nejčastější únik nevzniká útokem. Na serveru zůstane soubor, který tam být neměl, nebo se klíč dostane do kódu pro prohlížeč.

#### EXP-1 · zvenku · závažnost: vysoká

Konfigurace, repozitář a zálohy nejsou dostupné z webu.

- **Jak ověřit:** Zkuste `/.env`, `/.git/config`, `/backup.zip`, `/dump.sql`, `/phpinfo.php`. Například `curl -s -o /dev/null -w "%{http_code}" https://vas-web.cz/.env`
- **V pořádku, když:** Všechny vrací 404 nebo 403. Pozor na odpověď 200 se stránkou „nenalezeno“, ověřte obsah.

#### EXP-2 · zvenku · závažnost: vysoká

Kód pro prohlížeč neobsahuje tajné klíče.

- **Jak ověřit:** Projděte načtené JavaScript soubory a hledejte vzory jako `sk_live_`, `service_role`, `secret`, `api_key`, `Bearer`.
- **V pořádku, když:** Jen veřejné klíče, které jsou k použití v prohlížeči určené (např. publishable key platební brány).

#### EXP-3 · zvenku · závažnost: střední

Source mapy produkčního kódu nejsou veřejné, nebo jsou veřejné vědomě.

- **Jak ověřit:** Konec JS souboru: `//# sourceMappingURL=…`, pak zkusit stáhnout `.map`.
- **V pořádku, když:** Mapy nejsou dostupné, nebo neobsahují nic citlivého (komentáře s hesly, interní adresy).

#### EXP-4 · zvenku · závažnost: střední

Chybové stránky neukazují výpis chyby, cesty ani verze.

- **Jak ověřit:** Otevřete neexistující adresu a adresu s nesmyslným parametrem, např. `/?id='`.
- **V pořádku, když:** Obecná chybová stránka bez stack trace, SQL dotazu a cest na serveru.

#### EXP-5 · zvenku · závažnost: střední

Testovací a náhledové verze nejsou volně přístupné.

- **Jak ověřit:** Subdomény jako `staging.`, `dev.`, `test.`, náhledové adresy hostingu (`*.workers.dev`, `*.vercel.app`, `*.netlify.app`).
- **V pořádku, když:** Vyžadují přihlášení, nebo nejsou veřejné. Nejsou v Google.

#### EXP-6 · zvenku · závažnost: nízká

Výpis adresářů je vypnutý.

- **Jak ověřit:** Otevřete složku bez indexu, např. `/uploads/` nebo `/wp-content/uploads/`.
- **V pořádku, když:** 403 nebo 404, žádný seznam souborů.

### Doména, DNS a e-mail

Kdo ovládne doménu, ovládne web i e-mail. Špatně nastavený e-mail umožní posílat podvodné zprávy pod vaším jménem.

#### DNS-1 · zvenku · závažnost: vysoká

E-mail domény chrání SPF, DKIM a DMARC.

- **Jak ověřit:** `dig TXT vas-web.cz`, `dig TXT _dmarc.vas-web.cz` nebo [Internet.nl](https://internet.nl/).
- **V pořádku, když:** SPF končí `-all` nebo `~all`, DKIM podepisuje odchozí poštu, DMARC má `p=quarantine` nebo `p=reject`.

#### DNS-2 · zvenku · závažnost: vysoká

Doména, která neposílá e-maily, to říká výslovně.

- **Jak ověřit:** Stejné dotazy jako u DNS-1, u domén bez pošty.
- **V pořádku, když:** `v=spf1 -all` a DMARC `p=reject`. Jinak ji jde zneužít jako odesílatele.

#### DNS-3 · zvenku · závažnost: vysoká

Žádný DNS záznam nemíří na zrušenou službu.

- **Jak ověřit:** Projděte CNAME záznamy subdomén. Míří některý na smazaný hosting, bucket nebo aplikaci?
- **V pořádku, když:** Každý záznam vede na službu, kterou ovládáte. Jinak si ji může zaregistrovat kdokoli a převzít subdoménu.

#### DNS-4 · zvenku · závažnost: střední

Záznam CAA omezuje, kdo smí vydat certifikát.

- **Jak ověřit:** `dig CAA vas-web.cz`
- **V pořádku, když:** Uvádí jen autority, které opravdu používáte.

#### DNS-5 · zvenku · závažnost: nízká

Doména má zapnutý DNSSEC.

- **Jak ověřit:** [Internet.nl](https://internet.nl/) nebo `dig +dnssec vas-web.cz`
- **V pořádku, když:** Podpis je platný. U .cz domén to registrátoři běžně podporují.

#### DNS-6 · zevnitř · závažnost: vysoká

Účet u registrátora je zabezpečený a doména nevyprší.

- **Jak ověřit:** Nastavení účtu u registrátora domény.
- **V pořádku, když:** 2FA zapnuté, automatické prodloužení, zámek převodu, kontaktní e-mail funguje a nepatří bývalému dodavateli.

### Formuláře a vstupy

Každý formulář je vstup do aplikace. Zvenku se kontroluje jen pasivně, skutečné ošetření vstupů je vidět až v kódu.

#### FRM-1 · zvenku · závažnost: střední

Veřejné formuláře mají ochranu proti robotům.

- **Jak ověřit:** Podívejte se, jestli formulář používá ochranu typu Turnstile, reCAPTCHA nebo honeypot. Nic neodesílejte.
- **V pořádku, když:** Ochrana je nasazená a výsledek se ověřuje na serveru (to potvrdí až **FRM-2**).

#### FRM-2 · zevnitř · závažnost: vysoká

Server kontroluje a ošetřuje všechny vstupy.

- **Jak ověřit:** Kód obsluhy formulářů a API: validace, parametrizované dotazy do databáze, escapování výstupu.
- **V pořádku, když:** Žádné skládání SQL z textu, žádný neošetřený HTML výstup, ověření ochrany proti robotům na serveru.

#### FRM-3 · zevnitř · závažnost: střední

Přihlášení, formuláře a API mají omezený počet požadavků.

- **Jak ověřit:** Nastavení rate limitingu v aplikaci nebo v CDN (Cloudflare: Security → WAF → Rate limiting rules).
- **V pořádku, když:** Opakované pokusy z jedné adresy se zpomalí nebo zablokují.

#### FRM-4 · zevnitř · závažnost: střední

Nahrávání souborů je omezené.

- **Jak ověřit:** Kód nebo nastavení CMS pro upload.
- **V pořádku, když:** Povolené typy a velikost, soubory mimo složku, ze které server spouští kód, nové názvy souborů.

### Účty, přihlášení a práva

Většina správy webu stojí na účtech: hosting, CDN, doména, repozitář, CMS. Každý z nich je cesta k webu.

#### ACC-1 · zevnitř · závažnost: vysoká

Všechny účty s přístupem k webu mají dvoufázové ověření (2FA).

- **Jak ověřit:** Seznam členů v hostingu, Cloudflare, u registrátora, v repozitáři, v CMS a v e-mailu.
- **V pořádku, když:** 2FA u všech, ideálně vynucené nastavením účtu nebo organizace.

#### ACC-2 · zevnitř · závažnost: vysoká

Každý má vlastní účet a bývalí spolupracovníci přístup nemají.

- **Jak ověřit:** Projděte seznamy členů a porovnejte je s lidmi, kteří na webu dnes pracují.
- **V pořádku, když:** Žádné sdílené přihlašovací údaje, žádné neznámé ani neaktivní účty.

#### ACC-3 · zevnitř · závažnost: vysoká

Práva a API tokeny jsou co nejužší.

- **Jak ověřit:** Role členů a seznam API tokenů (Cloudflare: My Profile → API Tokens, GitHub: Settings → Developer settings).
- **V pořádku, když:** Token jen na potřebnou zónu a akci, s expirací. Žádný Global API Key v aplikacích a skriptech.

#### ACC-4 · zvenku · závažnost: střední

Administrace není volně vystavená.

- **Jak ověřit:** Zkuste běžné adresy: `/admin`, `/wp-admin`, `/wp-login.php`, `/administrator`.
- **V pořádku, když:** Administrace je za dalším ověřením (Cloudflare Access, omezení IP, 2FA), nebo má aspoň omezení pokusů.

#### ACC-5 · zevnitř · závažnost: střední

Hesla uživatelů jsou uložená bezpečně.

- **Jak ověřit:** Kód registrace a přihlášení, struktura tabulky uživatelů.
- **V pořádku, když:** Hashování přes bcrypt, scrypt nebo Argon2. Nikdy čitelně, MD5 ani SHA-1.

### Cookies a relace

Cookie s přihlášením je klíč k účtu. Musí se posílat jen šifrovaně a nesmí ji číst skripty.

#### CK-1 · zvenku · závažnost: střední

Cookies s přihlášením mají příznaky Secure, HttpOnly a SameSite.

- **Jak ověřit:** Vývojářské nástroje prohlížeče → Application → Cookies, nebo `Set-Cookie` v odpovědi.
- **V pořádku, když:** `Secure`, `HttpOnly`, `SameSite=Lax` nebo `Strict`.

#### CK-2 · zvenku · závažnost: střední

Analytické a reklamní cookies se nastaví až po souhlasu.

- **Jak ověřit:** Otevřete web v anonymním okně a před kliknutím na lištu zkontrolujte cookies a síťové požadavky.
- **V pořádku, když:** Před souhlasem jen nezbytné cookies, žádné požadavky na měřicí a reklamní služby.

### Kód a závislosti

Web stojí z velké části na cizím kódu: knihovnách, pluginech, šablonách. Jejich zranitelnosti jsou zranitelnosti webu.

#### DEP-1 · zevnitř · závažnost: vysoká

Závislosti, CMS a pluginy nemají známé zranitelnosti.

- **Jak ověřit:** `npm audit`, [OSV-Scanner](https://google.github.io/osv-scanner/), Dependabot, u WordPressu přehled aktualizací v administraci.
- **V pořádku, když:** Žádná kritická ani vysoká zranitelnost bez opravy. Nepoužívané pluginy jsou smazané, ne jen vypnuté.

#### DEP-2 · zevnitř · závažnost: vysoká

V repozitáři ani v jeho historii nejsou tajné klíče.

- **Jak ověřit:** [Gitleaks](https://github.com/gitleaks/gitleaks) nebo GitHub secret scanning nad celou historií.
- **V pořádku, když:** Klíče jsou jen v proměnných prostředí nebo ve správci tajemství. `.env` je v `.gitignore`. Klíč, který se v historii objevil, je vyměněný.

#### DEP-3 · zevnitř · závažnost: střední

Build je opakovatelný a z ověřených zdrojů.

- **Jak ověřit:** Lockfile v repozitáři, instalace v CI přes `npm ci` (nebo obdobu), kdo smí měnit CI a nasazení.
- **V pořádku, když:** Lockfile je v repu, nasazuje se jen z hlavní větve, tajné klíče CI mají jen nutná práva.

#### DEP-4 · zevnitř · závažnost: střední

Vlastní kód prošel hloubkovým bezpečnostním auditem.

- **Jak ověřit:** Coding agent se skillem [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill) nebo ruční revize podle [OWASP ASVS](https://owasp.org/www-project-application-security-verification-standard/).
- **V pořádku, když:** Zjištění jsou ověřená a ta vysoké závažnosti opravená.

#### DEP-5 · zvenku · závažnost: nízká

Knihovny viditelné v prohlížeči nejsou zastaralé.

- **Jak ověřit:** Verze v názvech souborů a v kódu (jQuery, Bootstrap, CMS), případně rozšíření prohlížeče typu Wappalyzer.
- **V pořádku, když:** Žádná knihovna se známou zranitelností bez opravy.

### Server, hosting a CDN

U spravovaného hostingu za většinu odpovídá poskytovatel. U vlastního serveru a CDN je nastavení na vás.

#### SRV-1 · zevnitř · závažnost: vysoká

Server je zabezpečený a aktualizovaný.

- **Jak ověřit:** Nastavení SSH (`/etc/ssh/sshd_config`), firewall, automatické aktualizace.
- **V pořádku, když:** Přihlášení jen SSH klíčem, root se přímo nepřihlásí, otevřené jen nutné porty, bezpečnostní aktualizace běží samy.

#### SRV-2 · zevnitř · závažnost: střední

Server za CDN nejde obejít přímým přístupem.

- **Jak ověřit:** Zjistěte IP originu a zkuste ho otevřít přímo, nebo zkontrolujte firewall originu.
- **V pořádku, když:** Origin přijímá provoz jen z CDN (rozsahy IP Cloudflare, Cloudflare Tunnel nebo autentizovaný origin).

#### SRV-3 · zevnitř · závažnost: střední

CDN filtruje škodlivý provoz.

- **Jak ověřit:** Cloudflare: Security → WAF a Bots, u jiné CDN obdobné nastavení.
- **V pořádku, když:** Spravovaná pravidla WAF a ochrana proti robotům jsou zapnuté, pravidla pro citlivé cesty existují.

#### SRV-4 · zevnitř · závažnost: vysoká

Databáze a interní služby nejsou dostupné z internetu.

- **Jak ověřit:** Konfigurace databáze, firewall, nastavení přístupu u spravované databáze.
- **V pořádku, když:** Databáze přijímá spojení jen z aplikace nebo přes privátní síť. Administrace typu phpMyAdmin není veřejná.

### Zálohy a obnova

Záloha má cenu, jen když z ní jde web obnovit. A jen když ji útočník nemůže smazat spolu s webem.

#### BAK-1 · zevnitř · závažnost: vysoká

Data i kód se zálohují automaticky a mimo produkci.

- **Jak ověřit:** Nastavení záloh hostingu, databáze a úložiště souborů.
- **V pořádku, když:** Pravidelné zálohy, uložené jinde než web (jiný účet nebo poskytovatel), s historií několika verzí.

#### BAK-2 · zevnitř · závažnost: vysoká

Obnova je vyzkoušená.

- **Jak ověřit:** Kdy naposledy proběhla zkušební obnova a jak dlouho trvala?
- **V pořádku, když:** Obnova proběhla v posledním roce a víte, kolik dat a času byste ztratili.

#### BAK-3 · zevnitř · závažnost: střední

Zálohy jsou chráněné.

- **Jak ověřit:** Kdo má k zálohám přístup a jestli je jde smazat ze stejného účtu jako web.
- **V pořádku, když:** Šifrované, s omezeným přístupem, nejlépe neměnné po dobu uchování.

### Monitoring a reakce

Problém, o kterém víte hned, je menší problém. Stačí pár upozornění a jasný postup.

#### MON-1 · zvenku · závažnost: nízká

Web má soubor security.txt s kontaktem pro hlášení chyb.

- **Jak ověřit:** `curl -s https://vas-web.cz/.well-known/security.txt`
- **V pořádku, když:** Obsahuje `Contact:` a platné `Expires:` ([RFC 9116](https://www.rfc-editor.org/rfc/rfc9116)).

#### MON-2 · zevnitř · závažnost: střední

Hlídá se dostupnost webu a expirace certifikátu i domény.

- **Jak ověřit:** Služba pro sledování dostupnosti a upozornění u registrátora.
- **V pořádku, když:** Výpadek nebo blížící se expirace pošle upozornění konkrétnímu člověku.

#### MON-3 · zevnitř · závažnost: střední

Přihlášení a změny se zaznamenávají.

- **Jak ověřit:** Audit log v Cloudflare, hostingu, repozitáři a CMS. Jak dlouho se logy drží?
- **V pořádku, když:** Víte, kdo a kdy změnil nastavení. Logy vydrží aspoň několik týdnů.

#### MON-4 · zevnitř · závažnost: nízká

Existuje postup pro bezpečnostní incident.

- **Jak ověřit:** Krátký dokument: koho volat, kde zrušit přístupy, jak vyměnit klíče, odkud obnovit.
- **V pořádku, když:** Postup je sepsaný a lidé, kterých se týká, o něm vědí.

*03 · Pro AI agenta*

## Kontrola pomocí AI agenta

AI agentovi pošlete adresu markdown verze této stránky a jeden z promptů. Agent jen s přístupem na web zvládne body zvenku. Agent spuštěný v repozitáři webu, s přístupem jen pro čtení, zvládne i body zevnitř.

### Prompt: kontrola zvenku

Pro agenta s přístupem na web (vyhledávání a stahování stránek, případně terminál s curl a dig).

```text
Zkontroluj zabezpečení webu https://vas-web.cz podle kontrolního seznamu:
https://vrealmatic.com/webove-sluzby/bezpecnost.md

Rozsah: jen body se štítkem „zvenku“. Máš jen veřejnou adresu, žádný přístup.
Dodrž mantinely z části „Mantinely pro agenta“.
Výstup: tabulka podle části „Formát výstupu“, od nejzávažnějších problémů.
```

### Prompt: kontrola zevnitř

Pro coding agenta (např. Claude Code) spuštěného v repozitáři webu, případně s tokenem jen pro čtení ke Cloudflare nebo hostingu.

```text
Zkontroluj zabezpečení webu https://vas-web.cz podle kontrolního seznamu:
https://vrealmatic.com/webove-sluzby/bezpecnost.md

Rozsah: všechny body. Body „zevnitř“ ověř v tomto repozitáři a v přístupech,
které máš k dispozici. Co nejde ověřit, označ „nelze ověřit“ a napiš, jaký přístup chybí.
Nic neměň. Tajné hodnoty nevypisuj, uveď jen soubor a řádek.
Dodrž mantinely z části „Mantinely pro agenta“.
Výstup: tabulka podle části „Formát výstupu“, od nejzávažnějších problémů.
```

### Mantinely pro agenta

- **Jen pasivně.** Běžné požadavky GET a HEAD jako návštěvník webu. Žádné skenování portů, hádání hesel, fuzzing, zátěžové testy ani pokusy o průnik.
- **Nic neodesílat.** Žádné formuláře, registrace ani objednávky, ani s vymyšlenými daty.
- **Nic neměnit.** Ani v repozitáři, ani v nastavení služeb. Oprava je samostatný krok po schválení.
- **Tajné hodnoty nevypisovat.** U nalezeného klíče, hesla nebo tokenu uvést jen místo (URL, soubor, řádek) a typ.
- **Jen svěřené cíle.** Kontrolovat jen domény, repozitáře a účty, které vlastník webu výslovně uvedl.
- **Nehádat.** Co nejde ověřit, označit „nelze ověřit“ a napsat proč.
- **Únik hlásit hned.** Veřejně dostupný klíč, záloha nebo osobní data patří na první řádek výstupu bez ohledu na pořadí.

### Formát výstupu

Jeden řádek na bod. Stav: **v pořádku**, **problém**, **nelze ověřit**, nebo **netýká se**. Závažnost přebírá ze seznamu. Pod tabulku krátké shrnutí: tři nejdůležitější kroky.

```markdown
| Bod   | Stav         | Závažnost | Zjištění a důkaz                 | Oprava                 |
|-------|--------------|-----------|----------------------------------|------------------------|
| EXP-1 | problém      | vysoká    | /.env vrací 200 a obsahuje DB_*  | Zakázat, vyměnit hesla |
| TLS-4 | problém      | střední   | Chybí Strict-Transport-Security  | Přidat HSTS            |
| BAK-2 | nelze ověřit | vysoká    | Bez přístupu k hostingu          | Zkušební obnova        |
```

### Sady a nástroje

Seznam výše pokrývá běžný provoz webu. Pro hlubší kontrolu kódu a aplikace se hodí tyto sady.

```bash
npx skills add https://github.com/cloudflare/security-audit-skill \
  --skill security-audit
```

Instalace skillu **cloudflare/security-audit-skill**. Agent pak audituje kód repozitáře, ve kterém běží (např. „security audit this codebase“). Patří do kontroly zevnitř, ne zvenku.

- [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill) – Skill pro coding agenty: vícefázový audit zdrojového kódu, každé zjištění nezávisle ověřené, výstup ve strojově čitelném formátu.
- [OWASP Top 10](https://owasp.org/www-project-top-ten/) – Deset nejčastějších rizik webových aplikací. Dobrý rámec pro revizi kódu.
- [OWASP ASVS](https://owasp.org/www-project-application-security-verification-standard/) – Podrobný standard požadavků na bezpečnost aplikace, ve třech úrovních přísnosti.
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/) – Krátké návody k jednotlivým tématům: hlavičky, přihlášení, nahrávání souborů a další.
- [Mozilla HTTP Observatory](https://developer.mozilla.org/en-US/observatory) – Kontrola bezpečnostních hlaviček a cookies zvenku, s doporučením oprav.
- [SSL Labs Server Test](https://www.ssllabs.com/ssltest/) – Podrobná kontrola certifikátu a nastavení TLS.
- [Internet.nl](https://internet.nl/) – Test webu a e-mailu: HTTPS, DNSSEC, SPF, DKIM, DMARC a další moderní standardy.
- [ZAP Baseline Scan](https://www.zaproxy.org/docs/docker/baseline-scan/) – Automatický pasivní sken webu. Prochází stránky, neútočí. Spouštět jen na vlastním webu.
- [Gitleaks](https://github.com/gitleaks/gitleaks) – Hledá tajné klíče v repozitáři i v jeho historii.
- [OSV-Scanner](https://google.github.io/osv-scanner/) – Hledá známé zranitelnosti v závislostech projektu.

*04 · Služba*

## Kontrola a oprava od nás

Seznam můžete projít sami. Pokud na to nemáte čas nebo chcete jistotu, projdeme ho za vás. Ve třech variantách podle toho, jak hluboko chcete jít.

### Varianta 1: Vnější kontrola

*Bez přístupu, stačí adresa webu*

- Všechny body zvenku
- Šifrování, hlavičky, DNS a e-mail, veřejné soubory, cookies
- Ověření ručně i nástroji

Zpráva se zjištěními podle závažnosti a návrhem oprav.

### Varianta 2: Vnitřní kontrola

*Přístup jen pro čtení, na domluvenou dobu*

- Všechny body seznamu
- Účty, 2FA, práva a API tokeny
- Kód, závislosti a tajné klíče v repozitáři
- Server, CDN, zálohy a logy

Zpráva a plán oprav: co hned, co do měsíce, co průběžně.

### Varianta 3: Kontrola a oprava

*Dočasně s právem zápisu, jen na dobu oprav*

- Vše z vnitřní kontroly
- Opravy podle schváleného plánu
- Ověření, že oprava funguje

Zpráva o změnách s postupem, jak je vrátit. Přístup na konci zrušený.

### Jak spolupráce probíhá

1. **Úvodní hovor** – Domluvíme variantu, rozsah a termín. Zjistíme, kde web běží a kdo má k čemu přístup.
2. **Přístup** – Pro vnější kontrolu žádný. Pro vnitřní nám založíte vlastní účet jen pro čtení, pro opravu dočasně s právem zápisu.
3. **Kontrola a oprava** – Projdeme seznam. Opravujeme až po vašem schválení plánu, každou změnu zapisujeme.
4. **Předání** – Dostanete zprávu. Přístup se zruší a klíče, které jsme při práci viděli, se vymění.

*05 · Přístup*

## Jak zacházíme s přístupem k vašemu webu

Převzetí přístupu je otázka důvěry. Proto má pevná pravidla, která si můžete kdykoli ověřit.

- **Vlastní účet s 2FA.** Žádné sdílené heslo, žádné přihlášení pod vaším účtem.
- **Jen pro čtení** všude, kde to platforma umí. Zápis jen u varianty s opravou a jen tam, kde se opravuje.
- **Časové okno.** Přístup platí jen po domluvenou dobu. Kde to jde, nastavíme automatickou expiraci.
- **Záznam změn.** Co, kde, proč a jak to vrátit. Dostanete ho ve zprávě.
- **Tajné hodnoty nikam nekopírujeme.** Klíče, které při práci uvidíme, se po skončení vymění.
- **Na konci se přístup ruší.** Ověříte si to sami v seznamu členů.

### Jaký přístup kde potřebujeme

| Kde | Vnitřní kontrola | Kontrola a oprava |
| --- | --- | --- |
| **Cloudflare** | Člen účtu s rolí **Administrator Read Only** | Role omezená na danou doménu (zónu) |
| **GitHub / GitLab** | Přístup **Read** k repozitáři | Zápis do větve, změny přes pull request, který schválíte |
| **Server (SSH)** | Vlastní uživatel s SSH klíčem, bez sudo | Dočasně s právem sudo |
| **Hosting a CMS** | Nejnižší role, která ukáže nastavení. Kde chybí, sdílení obrazovky. | Dočasný administrátorský účet |
| **Registrátor domény** | Sdílení obrazovky nebo snímky nastavení, přístup netřeba | Změny provedete vy podle našeho postupu |
| **Databáze** | Uživatel jen pro čtení | Zápis jen tehdy, když oprava míří do dat |

> **Platforma nemá roli jen pro čtení?** Pak volíme sdílení obrazovky: vy klikáte, my se díváme. Trvá to déle, ale přístup zůstává jen u vás.

## Shrnutí

- Zvenku vidíte to, co útočník: šifrování, hlavičky, DNS a veřejné soubory.
- Zevnitř vidíte, kudy se k webu dostane: účty, 2FA, tokeny, kód a zálohy.
- AI agentovi stačí adresa této stránky a jeden prompt. Mantinely a formát výstupu jsou součástí seznamu.
- Přístup pro kontrolu: vlastní účet, jen pro čtení, na domluvenou dobu a na konci zrušený.

## Zdroje a kam pokračovat

Seznam vychází z veřejných standardů a dokumentace poskytovatelů.

- [OWASP Secure Headers Project](https://owasp.org/www-project-secure-headers/) – Doporučené bezpečnostní hlavičky a jejich hodnoty.
- [MDN: Web security](https://developer.mozilla.org/en-US/docs/Web/Security) – Přehled bezpečnosti webu: HTTPS, CSP, cookies, hlavičky.
- [RFC 9116: security.txt](https://www.rfc-editor.org/rfc/rfc9116) – Standard souboru s kontaktem pro hlášení zranitelností.
- [Cloudflare: SSL/TLS režimy](https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/) – Rozdíl mezi Flexible, Full a Full (strict).
- [Cloudflare: role členů účtu](https://developers.cloudflare.com/fundamentals/manage-members/roles/) – Role jen pro čtení a role omezené na doménu.

### Související stránky

- [Audit AI webu](https://vrealmatic.com/ai/audit-webu) – Technický audit webů z vibe codingu: indexace, struktura, výkon i bezpečnost.
- [Správa webu](https://vrealmatic.com/webove-sluzby/sprava) – Průběžná péče o web: aktualizace, zálohy, dohled.
- [Cloudflare](https://vrealmatic.com/cs/cloudflare) – Návody k provozu webu na Cloudflare.

## Chcete web zkontrolovat a opravit?

Domluvíme rozsah, přístup i termín. Začít jde vnější kontrolou, ke které nepotřebujeme žádný přístup.

[Domluvit kontrolu](https://vrealmatic.com/kontakt)
