Když jdeš po sněhu, zanecháváš za sebou stopy. Každý, kdo jde za tebou, může vidět, kudy jsi šel. Na internetu je to podobné. Každá tvoje aktivita – co si prohlížíš, co píšeš, co stahuješ – zanechává digitální stopu. A stejně jako ve sněhu, i na internetu po tobě zůstávají stopy, které mohou ostatní vidět. V této kapitole se naučíme, co je to digitální stopa, co jsou cookies a jak chránit své soukromí.
Digitální stopa je souhrn všech dat, která po sobě zanecháváš, když používáš internet a digitální zařízení.
Digitální stopa je soubor všech informací, které o tobě existují v digitálním světě. Vzniká každou tvou aktivitou online.
Tvoje digitální stopa může o tobě hodně prozradit. Může ovlivnit, jaké reklamy uvidíš, jaké zprávy ti budou doporučeny, nebo dokonce jak tě budou vnímat budoucí zaměstnavatelé.
Když navštívíš webovou stránku, často se tě zeptá, jestli souhlasíš s cookies. Co to vlastně je?
Cookies jsou malé textové soubory, které si webové stránky ukládají do tvého počítače nebo mobilu. Pomáhají si pamatovat tvé preference, jako je jazyk, přihlášení nebo co jsi měl/a v košíku v e-shopu.
Některé cookies mohou sledovat tvé chování na internetu napříč různými stránkami. To může vést k narušení soukromí, protože pak o tobě firmy vědí víc, než bys chtěl/a.
Je důležité si uvědomit, že na internetu nejsi anonymní. Ale můžeš udělat hodně pro to, abys chránil/a své soukromí.
Pokud máš pocit, že je tvoje soukromí narušeno, nebo se ti něco na internetu nezdá, požádej o pomoc. Řekni to rodičům, učiteli nebo někomu dospělému, kdo se v tom vyzná.
V digitálním světě je naše soukromí velmi křehké. Každým kliknutím o sobě něco prozrazujeme. Je důležité si uvědomit, jakou digitální stopu zanecháváme a jak ji mohou ostatní využít. Učíme se tak zodpovědnosti za své online chování a za ochranu svých osobních údajů, což je klíčové pro bezpečný a svobodný život v moderním světě.
GDPR (General Data Protection Regulation) je nařízení EU, které od roku 2018 chrání osobní údaje občanů. Dává ti silná práva a firmám ukládá povinnosti.
Souhlas musí být aktivní – předvyplněná zaškrtávací políčka jsou nezákonná. Musíš aktivně zaškrtnout souhlas s cookies.
Weby a reklamní sítě používají různé metody pro sledování tvé aktivity:
First-party cookies jsou od webu, který navštěvuješ – pamatují si tvé přihlášení, jazyk, obsah košíku. Jsou užitečné.
Third-party cookies jsou od třetích stran (Google, Facebook, reklamní sítě). Sledují tě napříč weby a vytvářejí tvůj profil pro cílenou reklamu.
I bez cookies tě lze identifikovat podle kombinace nastavení prohlížeče: rozlišení obrazovky, nainstalované fonty, pluginy, časové pásmo... Tato kombinace je často unikátní jako otisk prstu.
Neviditelné obrázky (1×1 pixel) v emailech. Když email otevřeš, obrázek se stáhne a odesílatel ví, kdy jsi email četl.
Existují nástroje, které ti pomohou chránit soukromí:
Reklamní průmysl neustále vyvíjí nové metody sledování. Některé jsou překvapivě sofistikované:
Web požádá prohlížeč, aby nakreslil obrázek pomocí HTML5 Canvas. Výsledek se liší podle grafické karty, ovladačů a nastavení – a vytváří unikátní "otisk". Funguje i bez cookies!
Reklamní sítě se snaží propojit tvé aktivity napříč zařízeními. Když se přihlásíš ke Googlu na telefonu i na počítači, Google ví, že obě zařízení patří tobě. Ale i bez přihlášení mohou použít ultrazvukové signály v reklamách k propojení zařízení ve stejné místnosti!
Sledování způsobu, jak interaguješ s webem: rychlost psaní, pohyby myši, jak dlouho zůstáváš na stránce. Tyto vzorce chování jsou unikátní a mohou tě identifikovat.
Jak funguje online reklama?
Když navštívíš web s reklamou, v milisekundách proběhne aukce: web pošle požadavek reklamním sítím, ty na základě tvého profilu nabídnou ceny, vítěz zobrazí reklamu. Celé to trvá méně než 100 ms!
Prohlížel jsi boty na e-shopu? Teď je vidíš všude. To je retargeting – reklama na produkty, které jsi prohlížel, ale nekoupil. E-shop zaplatí, aby tě "sledoval" po internetu.
Pro ty, kteří chtějí maximální soukromí:
Tvůj provoz je šifrován a posílán přes 3 náhodné servery po celém světě. Žádný jednotlivý server nezná tvou IP a zároveň cílovou stránku. Velmi anonymní, ale pomalý.
Šifrovaný tunel k serveru VPN poskytovatele. Web vidí IP VPN serveru, ne tvou. Ale VPN poskytovatel může sledovat tvůj provoz – vyber důvěryhodného s no-log politikou.
Funkce Firefoxu, která izoluje různé weby do oddělených "kontejnerů". Facebook v jednom kontejneru neví, co děláš v jiném.
Jako IT specialista budeš pracovat s cookies a trackery na obou stranách – jako vývojář i jako ten, kdo chrání uživatele.
from flask import Flask, request, make_response
from datetime import datetime, timedelta
app = Flask(__name__)
@app.route('/')
def index():
# Čtení cookie
navstevy = request.cookies.get('navstevy', '0')
navstevy = int(navstevy) + 1
# Vytvoření odpovědi s cookie
resp = make_response(f"Počet návštěv: {navstevy}")
# Nastavení cookie (platnost 30 dní)
resp.set_cookie(
'navstevy',
str(navstevy),
max_age=30*24*60*60, # 30 dní v sekundách
httponly=True, # Nepřístupné z JavaScriptu
secure=True, # Pouze HTTPS
samesite='Lax' # Ochrana proti CSRF
)
return resp
@app.route('/souhlas')
def souhlas_cookies():
"""Uložení souhlasu s cookies (GDPR)."""
resp = make_response("Souhlas uložen")
resp.set_cookie('cookie_consent', 'true', max_age=365*24*60*60)
return resp
@app.route('/smazat')
def smazat_cookies():
"""Smazání všech cookies."""
resp = make_response("Cookies smazány")
for cookie in request.cookies:
resp.delete_cookie(cookie)
return resp
# JavaScript pro získání fingerprintu (na straně klienta)
fingerprint_js = """
async function getFingerprint() {
const data = {
userAgent: navigator.userAgent,
language: navigator.language,
platform: navigator.platform,
screenWidth: screen.width,
screenHeight: screen.height,
colorDepth: screen.colorDepth,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
touchSupport: 'ontouchstart' in window,
cookiesEnabled: navigator.cookieEnabled,
plugins: Array.from(navigator.plugins).map(p => p.name),
fonts: await detectFonts() // Detekce nainstalovaných fontů
};
// Hash všech dat pro vytvoření unikátního ID
const hash = await crypto.subtle.digest(
'SHA-256',
new TextEncoder().encode(JSON.stringify(data))
);
return Array.from(new Uint8Array(hash))
.map(b => b.toString(16).padStart(2, '0'))
.join('');
}
"""
# Python - zpracování fingerprintu na serveru
import hashlib
import json
def vytvor_fingerprint(data):
"""Vytvoří hash z browser dat."""
data_string = json.dumps(data, sort_keys=True)
return hashlib.sha256(data_string.encode()).hexdigest()
def je_stejny_uzivatel(fingerprint1, fingerprint2):
"""Porovná dva fingerprinty."""
return fingerprint1 == fingerprint2
# HTML/JavaScript pro cookie banner
cookie_banner_html = """
<div id="cookie-banner" style="
position: fixed; bottom: 0; left: 0; right: 0;
background: #333; color: white; padding: 20px;
display: none; z-index: 1000;">
<p>Používáme cookies pro zlepšení uživatelské zkušenosti.</p>
<button onclick="acceptCookies('all')">Přijmout vše</button>
<button onclick="acceptCookies('necessary')">Jen nezbytné</button>
<button onclick="showSettings()">Nastavení</button>
</div>
<script>
function checkConsent() {
if (!getCookie('cookie_consent')) {
document.getElementById('cookie-banner').style.display = 'block';
}
}
function acceptCookies(level) {
setCookie('cookie_consent', level, 365);
document.getElementById('cookie-banner').style.display = 'none';
if (level === 'all') {
// Inicializuj analytiku, reklamy atd.
initAnalytics();
}
}
window.onload = checkConsent;
</script>
"""
Jako IT specialista musíš implementovat logging tak, aby pomáhal při debuggingu, ale nenarušoval soukromí.
| ✅ Logovat | ❌ NELOGOVAT |
|---|---|
| Čas požadavku | Hesla (ani zahashovaná!) |
| HTTP metoda a URL | Čísla kreditních karet |
| Status kód odpovědi | Rodná čísla, zdravotní data |
| User ID (ne jméno!) | Plné IP adresy (anonymizuj) |
| Chybové zprávy | Session tokeny, API klíče |
import logging
import re
# Vlastní filter pro maskování citlivých dat
class SensitiveDataFilter(logging.Filter):
PATTERNS = [
(r'password["\']?\s*[:=]\s*["\']?[\w]+', 'password=***'),
(r'api_key["\']?\s*[:=]\s*["\']?[\w-]+', 'api_key=***'),
(r'\b\d{16}\b', '****-****-****-****'), # Kreditní karty
(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', '***@***.***'),
]
def filter(self, record):
message = record.getMessage()
for pattern, replacement in self.PATTERNS:
message = re.sub(pattern, replacement, message, flags=re.IGNORECASE)
record.msg = message
record.args = ()
return True
# Konfigurace loggeru
logger = logging.getLogger('app')
logger.addFilter(SensitiveDataFilter())
# Příklad
logger.info("Login user_id=123 password=tajne123")
# Výstup: Login user_id=123 password=***
import hashlib
def anonymizuj_ip(ip_adresa, salt="tajny_salt"):
"""Anonymizuje IP adresu pro GDPR compliance."""
# Možnost 1: Odstranění posledního oktetu
casti = ip_adresa.split('.')
casti[-1] = '0'
anonymni_ip = '.'.join(casti)
# Možnost 2: Hash (pokud potřebuješ identifikovat unikátní uživatele)
hash_ip = hashlib.sha256((ip_adresa + salt).encode()).hexdigest()[:16]
return anonymni_ip, hash_ip
ip = "192.168.1.123"
anon, hashed = anonymizuj_ip(ip)
print(f"Původní: {ip}")
print(f"Anonymní: {anon}") # 192.168.1.0
print(f"Hash: {hashed}") # a1b2c3d4e5f6...
from datetime import datetime, timedelta
import os
import glob
def smaz_stare_logy(log_dir, max_stari_dni=90):
"""Smaže log soubory starší než X dní (GDPR compliance)."""
hranice = datetime.now() - timedelta(days=max_stari_dni)
smazano = 0
for log_soubor in glob.glob(os.path.join(log_dir, '*.log')):
cas_modifikace = datetime.fromtimestamp(os.path.getmtime(log_soubor))
if cas_modifikace < hranice:
os.remove(log_soubor)
smazano += 1
print(f"Smazáno: {log_soubor}")
return smazano
# Spouštěj jako cron job nebo scheduled task
smaz_stare_logy('/var/log/myapp/', max_stari_dni=90)