Loading...

Aide CDN.com.tr

URLs signées : liens qui expirent

Protégez un fichier pour qu'il ne puisse être récupéré qu'avec une signature que vous générez, valable jusqu'à un moment que vous choisissez. Les requêtes non signées reçoivent 403, celles qui ont expiré reçoivent 410.

URLs signées : liens qui expirent

Protégez un fichier pour qu'il ne puisse être récupéré qu'avec une signature que vous générez, valable jusqu'à un moment que vous choisissez. Les requêtes non signées reçoivent 403, celles qui ont expiré reçoivent 410.

Guide suivant recommande

Chemin dans le panneau

  1. Panneau de gestion
  2. Règles de diffusion
  3. Liens expirables
  4. Secret

Prerequis

  • Un compte avec un nom d'hôte de diffusion
  • Un endroit dans votre application pour générer des liens

Modele de decision

À l'échelle du compte ou sur un seul chemin ?

L'option existe aux deux niveaux. À l'échelle du compte, chaque requête a besoin d'une signature, ce qui casse les pages ordinaires. Une règle pour /downloads ou /video est ce que la plupart des gens veulent.

  • À l'échelle du compte : uniquement pour les comptes qui ne servent que des fichiers protégés
  • Par règle : le choix normal

Combien de temps un lien doit-il rester valide ?

Assez court pour qu'un lien divulgué ne vaille rien, assez long pour qu'une connexion lente puisse terminer le téléchargement. Des minutes pour un document, des heures pour une vidéo volumineuse.

  • Documents et images : 5-15 minutes
  • Vidéo volumineuse ou archives : 1-6 heures

Guide etape par etape

1

Activez-le pour un seul chemin

Ouvrez Règles de diffusion, ajoutez ou modifiez la règle qui couvre le chemin que vous voulez protéger, activez l'option des liens expirables et définissez un secret. Utilisez une longue chaîne aléatoire, pas un mot.

  • Règles de diffusion → la règle pour /downloads → activez les liens expirables → collez un secret aléatoire → Appliquer les modifications

Resultat attendu: Une fois que la configuration atteint les edges, une requête simple vers ce chemin renvoie 403.

2

Générez un lien dans votre application

La signature est la forme base64url du MD5 de l'expiration, du chemin et du secret assemblés, avec un seul espace avant le secret. Ajoutez-la sous la forme md5 et l'expiration sous la forme expires.

  • PHP: $expires = time() + 600; $token = rtrim(strtr(base64_encode(md5($expires . $uri . " " . $secret, true)), "+/", "-_"), "=");
  • Then: https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=EXPIRES

Resultat attendu: Le lien est servi jusqu'à ce que l'expiration passe.

3

Vérifiez les trois résultats

Vérifiez les cas d'échec en plus de celui de réussite, car ce sont eux que votre équipe de support verra dans les rapports.

  • Récupérez sans paramètres (403)
  • Récupérez avec une expiration passée (410)
  • Récupérez un lien valide (200)

Resultat attendu: Trois réponses différentes, pour qu'un rapport d'utilisateur puisse être classé à partir du seul code de statut.

Verification

  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip" → 403
  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=PAST" → 410

Cas d'usage

Vous vendez une vidéo, un rapport ou un téléchargement, et le lien ne doit pas pouvoir être partagé indéfiniment. La protection anti-hotlink empêche d'autres sites d'intégrer vos fichiers ; une URL signée va plus loin et rend chaque lien personnel et limité dans le temps.

Workflow rapide

  1. Règles de diffusion → sélectionnez le compte (ou une seule règle pour un chemin) → activez l'option des liens expirables et définissez un secret.
  2. Votre application construit le lien : elle hache l'heure d'expiration, le chemin et le secret, puis ajoute la signature et l'expiration à l'URL.
  3. L'edge vérifie la signature avant toute autre chose. Les liens valides sont servis et mis en cache normalement ; les liens invalides n'atteignent jamais votre origin.
  4. Faites tourner le secret en cas de fuite, ou quand quelqu'un s'en va. Chaque lien signé avec l'ancien secret cesse de fonctionner immédiatement.

Verifications

  • Un lien sans les paramètres renvoie 403.
  • Un lien dont l'expiration est dépassée renvoie 410 — un code distinct, pour que vos propres logs distinguent les deux cas.
  • Un lien avec une signature correcte est servi, et la réponse est mise en cache comme n'importe quelle autre.