Zum Inhalt springen
HexaTransfer
Zurück zum Blog
Verschlusselung & Sicherheit

Sichere Link-Sharing Best Practices: Download-URLs schützen

Best Practices für sichere Download-Links. URL-Token-Sicherheit, Link-Ablauf und Download-Limits.

Ein sicherer Download-Link behandelt die URL selbst als Teil des Schlüssels. Der Slug nach dem Schrägstrich sollte mindestens 128 Bit Entropie haben (denken Sie an hexatransfer.com/d/7Kj9xQmN2vP8rBwLsE4fT), in Stunden statt Tagen ablaufen, Downloads auf ein oder zwei Versuche begrenzen, und — entscheidend — niemals das einzige Geheimnis sein. Paaren Sie ihn mit einem passwortabgeleiteten AES-256-GCM-Schlüssel, der im URL-Fragment (nach dem #) lebt, damit er nie in Server-Logs auftaucht, und Sie haben die häufigsten Link-Leak-Vektoren von Slack-Previews bis zu Unternehmens-Proxy-Archiven ausgeschaltet.

Entropie: Die Mathematik der Ratbarkeit

Ein 6-stelliger Slug aus Buchstaben und Ziffern hat 36^6 = 2,1 Milliarden Kombinationen. Das klingt gewaltig, bis Sie bedenken, dass ein Botnet 100.000 URLs pro Sekunde gegen ein CDN testen kann — ein nicht authentifizierter Angreifer listet den gesamten Raum in etwa sechs Stunden auf. Steigen Sie auf 128 Bit (22 Zeichen base64url), und die Ratezeit übersteigt den Wärmetod des Universums. Verwenden Sie crypto.getRandomValues(), niemals Math.random(), und kodieren Sie niemals eine Datenbank-ID. Sequenzielle Tokens leaken das Übertragungsvolumen an jeden, der zwei Proben eine Woche auseinander sammelt.

Den Schlüssel ins Fragment, nicht in den Pfad legen

Alles nach # in einer URL ist der Fragment-Bezeichner — Browser senden ihn nicht an den Server. Den Entschlüsselungsschlüssel dort zu speichern ist das Muster, das Firefox Send eingeführt hat: /#k=abc123xyz. Der Server sieht nur den opaken Download-Slug, sodass seine Access-Logs, SIEM-Exporte und Breach-Dumps kein Schlüsselmaterial enthalten. CDN-Edge-Caches können die Nutzlast ebenfalls nicht entschlüsseln. Slack-Unfurls verwerfen das Fragment, wenn sie die URL sondieren, sodass der Preview-Bot den Schlüssel nie sieht. Dieser einzelne Trick blockiert 80 % praktischer Link-Abfang-Angriffe.

Ablaufzeitfenster, die zur Bedrohung passen

Standard-7-Tage-Ablauf ist für die meisten Anwendungsfälle zu großzügig. Kalibrieren Sie nach Workflow: 15 Minuten für ein Überweisungs-.pdf an eine Bank, 4 Stunden für eine Vertragsüberprüfung, 24 Stunden für ein Fotoalbum, 7 Tage nur für asynchrone internationale Zusammenarbeit. Drücken Sie den Ablauf als absoluten UTC-Zeitstempel in der signierten URL-Nutzlast aus und erzwingen Sie ihn serverseitig — vertrauen Sie niemals einer clientseitigen Uhr. Bei Ablauf überschreiben Sie den Chiffretext auf der Disk mit Nullen (idealerweise via blkdiscard auf NVMe), damit ein späterer Disk-Forensik-Scan nichts findet.

Download-Zähler, die wirklich funktionieren

Ein Single-Download-Link klingt wasserdicht, bis Sie bemerken, dass Browser partielle Transfers aggressiv wiederholen. Wenn Chrome bei 80 % abbricht und mit einer neuen Range-Anfrage fortfährt, zählt das als zwei Downloads? Implementieren Sie den Zähler an der Datei-Abschluss-Grenze, nicht pro HTTP-Anfrage. Inkrementieren Sie nur wenn das letzte Byte übertragen wurde und das Auth-Tag verifiziert ist. Alternativ verfolgen Sie eindeutige Session-IDs über ein 10-Minuten-Fenster: eine Session = ein Download, unabhängig von der Anzahl der Range-Anfragen. WeTransfer vermischt das und wurde dafür kritisiert, Links fälschlicherweise als verbraucht zu markieren.

Signierte URLs mit kurzlebigen Tokens

Für Enterprise-Flows wickeln Sie die Download-URL mit einer HMAC-SHA256-Signatur über (Slug, Ablauf, max_downloads, issuer_id) ein. Der Server validiert die Signatur, bevor er ein einziges Byte bereitstellt. S3-Pre-Signed-URLs tun das nativ; R2 und Backblaze B2 folgen demselben Muster. Eine signierte URL, die an Slack leakt, ist weiterhin gefährlich, aber der kurze Ablauf (z. B. 5 Minuten) begrenzt den Schaden. Paaren Sie das mit IP-Bindung — die Signatur enthält das erwartete /24-Präfix — um Link-Weiterleitungen über Geografien zu verhindern.

Referrer- und Preview-Leaks verhindern

Browser senden die vollständige URL (ohne Fragment) im Referer-Header, sofern Sie nicht Referrer-Policy: no-referrer auf der Download-Seite setzen. Ohne diesen Header leakt ein Klick auf einen externen Link von der Download-Seite den Slug an jeden Tracker auf dem Ziel. Setzen Sie außerdem X-Robots-Tag: noindex, nofollow und eine robots.txt, die /d/ blockiert, damit Googlebot keinen Link archiviert, der versehentlich in einem Forum eingefügt wurde. Für Slack- und Teams-Previews geben Sie 204 No Content an User-Agents zurück, die zu deren Unfurl-Bots passen.

Weiterleitungskontrollen und Empfänger-Bindung

Sobald jemand einen Link erhält, kann er ihn an jeden weiterleiten. Um das zu verhindern, binden Sie den Link an die Empfängeridentität. Optionen in steigender Stärke: E-Mail-Verifizierung (einmaliges Token an bob@firma.de), SMS-Verifizierung (OTP an Mobilnummer), Passkey-Registrierung beim ersten Besuch oder OIDC-Login via Google Workspace. Jeder Schritt tauscht Reibung gegen Eingrenzung. Für eine DSGVO-Artikel-15-Auskunftsreaktion ist E-Mail-Verifizierung üblicherweise ausreichend. Für ein HIPAA-reguliertes Laborergebnis gehört Passkey oder OIDC dazu.

Widerruf auf Abruf

Selbst mit allen Schutzmaßnahmen geht etwas schief — ein gestohlenes Laptop, ein gekündigter Auftragnehmer, ein falscher Empfänger. Ein Widerrufs-Button, der den Link sofort beendet, ist entscheidend. Implementierung: Führen Sie eine Widerrufsliste mit Slug-Hash als Schlüssel, die bei jedem Download geprüft wird. Propagieren Sie sie innerhalb von 60 Sekunden an CDN-Edges via Purge-API (Cloudflares /zones/:id/purge_cache akzeptiert eine URL-Liste). HexaTransfer bietet den Widerruf über das Sender-Dashboard; Dropbox Transfer und Smash unterstützen ihn beide, berechnen aber extra. Testen Sie den Widerruf vierteljährlich — kaputte Buttons während Vorfällen sind schlimmer als kein Button.

Telemetrie ohne Überwachung

Protokollieren Sie genug, um Missbrauch zu erkennen (IP-Hash, User-Agent-Familie, Zeitstempel, bereitgestellte Bytes), aber nicht genug, um die Empfängeridentität zu rekonstruieren. Hashen Sie IPs mit einem täglich rotierenden Schlüssel, damit Korrelationsfenster kurz bleiben. Protokollieren Sie niemals das URL-Fragment. Ein 30-Tage-Aufbewahrungsfenster erfüllt SOC-2-Common-Criteria 7.2, ohne ein Überwachungsarchiv zu schaffen. Zeigen Sie dem Sender Missbrauchs-Zähler im Dashboard, damit er „3 fehlgeschlagene Passwortversuche von AS15169" sieht und weiß, dass er widerrufen soll.

Auf hexatransfer.com testen — kostenlos, ohne Konto, bis 10 GB.

Große Dateien sicher mit Ende-zu-Ende-Verschlüsselung senden

Übertragen Sie Dateien bis zu 10 GB kostenlos mit Ende-zu-Ende-Verschlüsselung. Kein Konto erforderlich. Ihre Dateien werden in Ihrem Browser verschlüsselt, bevor sie hochgeladen werden — niemand sonst kann sie lesen.

Datei senden