# Un livrable confidentiel

> Un mot de passe que le client tape une fois, une durée courte, et un code qui disparaît au premier téléchargement.

Canonical: https://colis-docs.vercel.app/docs/cas-d-usage/livraison-confidentielle · Markdown: https://colis-docs.vercel.app/docs/cas-d-usage/livraison-confidentielle.md

## Le problème

Un contrat, des accès, un export de fichier clients : le lien ne doit pas traîner des mois dans une
boîte mail, ni fonctionner pour quelqu’un d’autre.

## La démarche

Sur la page d’envoi, avant d’envoyer :

- **Durée de conservation** : la plus courte qui convient, de dix minutes au maximum du déploiement.
- **Mot de passe pour ce colis** : quatre caractères au moins. Il est haché avec scrypt, jamais
  stocké en clair, jamais récupérable.
- **Détruire après le premier téléchargement** : l’aperçu reste gratuit ; le téléchargement consomme
  le code.

Depuis un terminal, les mêmes options passent en en-têtes :

```sh
curl -X POST https://votre-livraison.vercel.app/api/transfers \
  -H "authorization: Bearer $DROP_PASSWORD" \
  -H 'content-type: application/pdf' \
  -H "x-colis-filename: $(printf %s contrat.pdf | jq -sRr @uri)" \
  -H 'x-drop-expires-in: 3600' -H 'x-drop-once: 1' \
  -H 'x-drop-passphrase: open%20sesame' \
  --data-binary @contrat.pdf
```

Le client ouvre le lien : la page ne dit rien d’autre que « protégé » tant que le mot de passe n’est
pas tapé. Ensuite seulement, l’aperçu, le nom, la taille. Depuis un terminal, il passe le mot de passe
avec `colis recevoir <code> --remote … --token <mot de passe>`.

## À surveiller

- **Deux canaux.** Envoyez le code par un canal et le mot de passe par un autre. Le code seul ne vaut
  alors plus rien.
- **Les essais sont limités.** Dix mauvais mots de passe depuis un même client, ou cinquante sur un
  même code, le verrouillent quinze minutes. Les compteurs vivent dans la mémoire de chaque instance :
  sur un hébergement serverless, ils ralentissent les essais plus qu’ils ne les arrêtent.
- **Un seul téléchargement.** Deux téléchargements lancés en même temps ne l’obtiennent pas tous les
  deux : le premier réserve le code par une écriture conditionnelle. Un téléchargement coupé à
  mi-chemin a quand même consommé le code.
- **Un mot de passe perdu est perdu.** Personne ne peut le relire ni le réinitialiser, pas même vous.
  Le colis n’est alors plus qu’un fichier qui expire.
- **L’accusé survit.** Le client peut encore valider après la destruction : l’accusé de réception
  vit plus longtemps que le fichier.
