---
title: "Compartir enllaços de manera segura per a desenvolupadors | Blog de LinkPilot"
url: https://uselinkpilot.com/ca/blog/secure-link-sharing-for-developers
description: "Guia pràctica per a equips d'enginyeria: quan fer servir enllaços d'un sol ús, com generar-los amb scripts i com integrar-los a la incorporació i a la CI."
lang: ca
---

Seguretat (https://uselinkpilot.com/ca/blog/category/security)

# Compartir enllaços de manera segura per a desenvolupadors

Guia pràctica per a equips d'enginyeria: quan fer servir enllaços d'un sol ús, com generar-los amb scripts i com integrar-los a la incorporació i a la CI.

W. Miller (https://uselinkpilot.com/ca/author/w-miller)26 de maig del 2026 · Actualitzat el 22 d’octubre del 2026 · Sobre LinkPilot (https://uselinkpilot.com/ca/about)

Per a un enginyer, compartir secrets sol aparèixer en tres moments: la **incorporació**, el **lliurament a proveïdors** i la **resposta a incidents**. Aquí teniu la visió d'un desenvolupador sobre quan cal fer servir un enllaç d'un sol ús, quan no cal, i com generar-lo amb un script sense que el secret s'escoli a l'historial de l'intèrpret d'ordres pel camí. Per provar primer el mecanisme, el generador gratuït d'enllaços secrets d'un sol ús (https://uselinkpilot.com/ca/tools/free-secret-link-generator) no demana compte.

## Quan ha de fer servir un desenvolupador un enllaç d'un sol ús?

Quan hi ha una persona com a mínim en un dels extrems del lliurament i el valor no s'ha de conservar enlloc després. Els casos habituals:

- Donar a un enginyer nou el seu primer joc de credencials.
- Compartir una contrasenya d'administrador temporal durant un incident.
- Lliurar a un proveïdor o a un contractista un testimoni que no ha de viure a la vostra caixa forta.
- Rotar una credencial quan el valor antic ha de deixar de funcionar de seguida.
- Enviar a un client la clau d'API que li heu generat.

## Quan no s'ha de fer servir un enllaç d'un sol ús

- **Secrets de màquina a màquina.** Aquí la peça adequada són les variables d'entorn de la CI (per exemple, els secrets de GitHub Actions (https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions)), els Secrets de Kubernetes (https://kubernetes.io/docs/concepts/configuration/secret/) i les credencials dinàmiques de Vault. Un enllaç serveix per al lliurament que fa una persona cap a aquests sistemes.
- **Credencials d'equip de llarga durada.** El seu lloc és un gestor de contrasenyes.
- **Configuració pública.** No disfresseu de secret una configuració que no ho és. Feu servir un enllaç normal.

La línia divisòria: si tots dos extrems de la transferència són màquines, feu servir el magatzem de secrets de la vostra plataforma. Si almenys un extrem és una persona, un enllaç d'un sol ús sol ser la peça més neta.

| Situació | Peça adequada |
| --- | --- |
| Primeres credencials d'un enginyer nou | Enllaç secret d'un sol ús |
| Un pipeline de CI necessita un testimoni de desplegament en temps d'execució | Magatzem de secrets de la CI / variables d'entorn |
| Un pod necessita la contrasenya d'una base de dades | Secret de K8s / operador de secrets externs |
| Accés d'equip que fan servir cinc persones cada dia | Gestor de contrasenyes (caixa forta compartida) |
| Un client necessita la clau d'API que li heu generat | Enllaç secret d'un sol ús |
| Un secret que es necessita dins d'un repositori git | Mai: feu referència a un magatzem de secrets i afegiu una anàlisi de secrets a la CI |

## Generar-lo amb un script

LinkPilot té una API REST (a tots els plans, també al pla Free). Generar un secret des d'un script té aquest aspecte:

```bash
LP_KEY=lp_live_...

URL=$(curl -sS https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": "'"$NEW_DB_PASSWORD"'",
    "expires_in": 3600,
    "burn_after_read": true,
    "passphrase": "'"$ONBOARDING_PASSPHRASE"'"
  }' | jq -r '.url')

echo "Secret link: $URL"
```

Passeu aquest URL al canal de lliurament que ja feu servir: un missatge directe de Slack, un correu, el webhook de l'eina d'incorporació.

### Mantenir el contingut fora de la llista de processos

El fragment anterior té un defecte clàssic: interpolar el contingut a `-d` el posa a la línia d'ordres de curl, on qualsevol usuari local el pot llegir amb `ps` mentre la petició s'executa. Construïu el JSON amb `jq` (https://jqlang.org/manual/) i passeu-lo per l'entrada estàndard amb l'opció `-d @-` de curl (https://curl.se/docs/manpage.html#-d):

```bash
set -euo pipefail

jq -n --arg payload "$NEW_DB_PASSWORD" \
      --arg pass "$ONBOARDING_PASSPHRASE" \
      '{payload: $payload, expires_in: 3600,
        burn_after_read: true, passphrase: $pass}' |
curl -sS https://api.uselinkpilot.com/v1/secrets \
  -H "Authorization: Bearer $LP_KEY" \
  -H "Content-Type: application/json" \
  -d @- | jq -r '.url'
```

Tres hàbits que convé convertir en reflexos:

- Els valors arriben per variables d'entorn o per la CLI d'un gestor de secrets; mai no s'escriuen en un intèrpret interactiu, on acaben a l'historial.
- L'script imprimeix l'_enllaç_, mai el contingut.
- `set -euo pipefail`, perquè una crida a l'API que falli no pugui passar en silenci un URL buit al pas següent.

## Plantilla d'incorporació

Un model que funciona bé per als enginyers nous el primer dia:

1. L'script d'incorporació crea els comptes i obté credencials d'un sol ús.
2. L'script crea un enllaç secret per credencial, que caduca al cap de 4 hores, amb una frase de contrasenya compartida.
3. L'script envia un correu amb tots els enllaços i un missatge directe de Slack amb la frase de contrasenya.
4. L'enginyer obre cada enllaç i copia la credencial al seu gestor de contrasenyes.
5. Tot el que no s'hagi llegit a final del dia es revoca i es torna a generar quan li vagi bé.

Per què aquests paràmetres: la caducitat de 4 hores cobreix un primer matí normal sense deixar credencials actives tota la nit; la frase de contrasenya viatja per un segon canal, de manera que un correu reenviat o enviat per error no fa cap mal; i la destrucció després de la lectura fa que la bústia de l'enginyer acabi el dia només amb URL inutilitzats.

Digueu-ho explícitament a la persona nova: _«cada enllaç funciona una sola vegada; deseu el valor al gestor de contrasenyes abans de tancar la pestanya»_. L'error d'incorporació més freqüent és que el destinatari llegeixi el secret, tanqui la pestanya i doni per fet que hi podrà tornar més tard.

## Un procediment de rotació

Canviar la contrasenya compartida d'una base de dades quan qui la rep és un contractista o un company d'equip:

1. Genereu la contrasenya nova i apliqueu-la al sistema d'origen (la base de dades, la consola del núvol o allà on sigui la referència).
2. Actualitzeu primer els vostres consumidors (la caixa forta de la CI, el secret de K8s, la configuració de l'aplicació), perquè no es trenqui res mentre es fa el lliurament a la persona.
3. Creeu un enllaç d'un sol ús per al valor nou: destrucció després de la lectura, caducitat d'1 hora i frase de contrasenya.
4. Lliureu l'enllaç i la frase de contrasenya per canals diferents.
5. Comproveu l'esdeveniment de visualització a la cronologia d'auditoria. Si no s'ha vist abans de la caducitat, revoqueu-lo i genereu-ne un altre; no torneu a enviar mai el mateix enllaç.
6. Confirmeu que la credencial antiga està desactivada a l'origen.

Cada rotació té el seu propi enllaç. Els enllaços són independents per disseny. Per al lliurament és un avantatge i per a la governança no aporta res, així que el _calendari_ de rotacions viu al gestor o al procediment, no a l'eina d'enllaços.

## Resposta a incidents

Durant un incident sovint cal rotar una credencial i repartir la nova entre uns quants responsables, de pressa. No l'enganxeu al canal de l'incident: aquest canal queda enregistrat per a l'anàlisi posterior, i el secret acabarà a l'exportació, al document de retrospectiva i a tots els sistemes de retenció que en depenguin.

- Roteu la credencial al sistema d'origen.
- Genereu un enllaç secret que caduqui al cap de 30 minuts.
- Deixeu l'enllaç al canal; envieu la frase de contrasenya per missatge directe.
- Després de l'incident, confirmeu que l'enllaç s'ha destruït o s'ha revocat.

Així, l'anàlisi posterior conté un URL inutilitzat en lloc d'una contrasenya d'administrador activa. A més, el rastre d'auditoria dona a qui revisa la cronologia un registre exacte de l'estil «credencial regenerada a les 14:32, llegida a les 14:33» sense cap feina addicional.

Una nota sobre les previsualitzacions: els clients de xat obren els URL enganxats per mostrar-ne una vista prèvia. Un enllaç secret ben dissenyat no en pateix perquè la petició de la vista prèvia és un `GET` i la visualització és un `POST` explícit. Trobareu el mecanisme complet a l'article sobre els analitzadors d'enllaços i els secrets d'un sol ús (https://uselinkpilot.com/ca/blog/link-scanners-and-one-time-secrets). Si esteu avaluant una eina, proveu-ho abans d'un incident, no durant.

## Què us diu el rastre d'auditoria?

Si un secret s'ha llegit, quan i, aproximadament, des d'on, i si algú ha provat una frase de contrasenya incorrecta. Cada secret de LinkPilot porta una cronologia d'esdeveniments: created, viewed, failed_passphrase, burned, expired, revoked. Les visualitzacions es registren amb data i hora, la geolocalització aproximada quan n'hi ha, l'agent d'usuari i una IP convertida en hash (SHA-256 amb una sal que canvia cada dia; la IP original no es desa mai). A la pràctica, això us dona tres respostes en què poden confiar els scripts i els procediments:

- **Confirmació del lliurament**: un esdeveniment viewed vol dir que el lliurament s'ha fet.
- **Detecció d'anomalies**: una ràfega de failed_passphrase o una visualització que no reconeixeu és el senyal per fer la rotació immediatament.
- **Un registre net per a les revisions**: «lliurat una vegada, llegit una vegada, destruït» és una frase que agrada als auditors.

## Límits: el que els enllaços no resolen

- **No són una caixa forta.** Un enllaç d'un sol ús no gestiona l'accés continuat, els calendaris de rotació ni l'inventari de qui té què.
- **L'enllaç és la clau.** LinkPilot xifra el text al vostre navegador i no rep mai la clau, però aquesta clau viatja a la part de l'enllaç que va després del #. Per tant, qualsevol persona que obtingui l'enllaç complet pot llegir el secret, i si l'enllaç es perd, el secret no es pot recuperar. Els fitxers adjunts es xifren de la mateixa manera, però no el nom ni la mida. La caducitat curta i la destrucció després de la lectura continuen sent importants. _Actualització del 29 de setembre de 2026: aquest punt deia abans «no tenen xifratge d'extrem a extrem», cosa que era certa fins a aquella data._ Els detalls són a la pàgina d'arquitectura de seguretat (https://uselinkpilot.com/ca/security-architecture).
- **No resolen la dispersió de secrets al codi.** Les claus escrites directament als repositoris necessiten anàlisi i rotació, no un mitjà de lliurament millor.
- **No poden protegir l'altre extrem.** Un cop una persona ha llegit el valor, considereu que viu allà on l'hagi posat.

Proveu-la gratis, sense registre

### Generador d'enllaços secrets d'un sol ús

Compartiu una contrasenya o una nota amb un enllaç que només s'obre una vegada.

Obre l'eina (https://uselinkpilot.com/ca/tools/free-secret-link-generator)

## Lectures relacionades

- Com compartir claus d'API de manera segura: https://uselinkpilot.com/ca/blog/how-to-share-api-keys-securely
- Enllaços que caduquen: per què importen els terminis curts: https://uselinkpilot.com/ca/blog/expiring-links-security
- Arquitectura de seguretat de LinkPilot: https://uselinkpilot.com/ca/security-architecture

## Referències

- GitHub Docs, Using secrets in GitHub Actions (https://docs.github.com/en/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions).
- Kubernetes, Secrets (https://kubernetes.io/docs/concepts/configuration/secret/).
- jq, Manual (https://jqlang.org/manual/).
- curl, Manual page, `-d, --data` (https://curl.se/docs/manpage.html#-d).

## Eines per a aquest article

Generador d'enllaços secrets d'un sol ús

Compartiu una contrasenya o una nota amb un enllaç que només s'obre una vegada.
https://uselinkpilot.com/ca/tools/free-secret-link-generator

Missatge que s'autodestrueix

Envieu una nota que desapareix després de llegir-la una vegada.
https://uselinkpilot.com/ca/tools/burn-after-read-secret

Generador d'enllaços amb caducitat

Creeu enllaços que deixen de funcionar en un moment determinat.
https://uselinkpilot.com/ca/tools/temporary-link

## Preguntes freqüents

### Puc crear enllaços secrets des d'un script?

### Els secrets poden viure en variables d'entorn a la CI?

### Com gestiono la rotació amb scripts?

### El secret no acabarà a l'historial de l'intèrpret d'ordres o a la llista de processos?

### Com puc confirmar que el destinatari ha rebut de debò la credencial?

## LinkPilot envia un enllaç secret que desapareix després d'obrir-lo.

Es xifra al vostre navegador, es mostra una sola vegada i després es destrueix. Sense compte.

Crea un enllaç secret (https://uselinkpilot.com/ca/tools/free-secret-link-generator)

## Llegiu també

Seguretat

### Enllaços secrets o gestors de contrasenyes

Un gestor de contrasenyes desa les credencials que l'equip reutilitza; un enllaç d'un sol ús en lliura una a una persona, una vegada. Calen tots dos.
https://uselinkpilot.com/ca/blog/secret-links-vs-password-managers

Seguretat

### Escàners d'enllaços i secrets d'un sol ús

Un enllaç d'un sol ús destruït amb un GET mor quan Slack o una passarel·la de correu el previsualitza. Doneu metadades al GET i destruïu-lo en mostrar-lo.
https://uselinkpilot.com/ca/blog/link-scanners-and-one-time-secrets

Seguretat

### Com compartir claus d'API de manera segura

No enganxeu mai una clau d'API al xat o al correu: envieu un enllaç d'un sol ús, xifrat al navegador i destruït en obrir-lo, i roteu les claus ja enganxades.
https://uselinkpilot.com/ca/blog/how-to-share-api-keys-securely

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Inici",
        "item": "https://uselinkpilot.com/ca"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://uselinkpilot.com/ca/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Compartir enllaços de manera segura per a desenvolupadors",
        "item": "https://uselinkpilot.com/ca/blog/secure-link-sharing-for-developers"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/ca/blog/secure-link-sharing-for-developers#article",
    "headline": "Compartir enllaços de manera segura per a desenvolupadors",
    "description": "Guia pràctica per a equips d'enginyeria: quan fer servir enllaços d'un sol ús, com generar-los amb scripts i com integrar-los a la incorporació i a la CI.",
    "inLanguage": "ca",
    "datePublished": "2026-05-26",
    "dateModified": "2026-10-22",
    "image": "https://uselinkpilot.com/logo-512.png",
    "author": {
      "@type": "Person",
      "@id": "https://uselinkpilot.com/author/w-miller#person",
      "name": "W. Miller",
      "url": "https://uselinkpilot.com/ca/author/w-miller",
      "worksFor": {
        "@type": "Organization",
        "name": "LinkPilot",
        "url": "https://uselinkpilot.com"
      }
    },
    "publisher": {
      "@type": "Organization",
      "name": "LinkPilot",
      "url": "https://uselinkpilot.com",
      "logo": {
        "@type": "ImageObject",
        "url": "https://uselinkpilot.com/logo-512.png",
        "width": 512,
        "height": 512
      }
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://uselinkpilot.com/ca/blog/secure-link-sharing-for-developers"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Puc crear enllaços secrets des d'un script?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sí. LinkPilot ofereix una API REST (a tots els plans, també al pla Free) perquè pugueu generar secrets des de scripts d'incorporació, tasques de CI o eines internes. Cada crida retorna un URL que podeu passar al correu, a Slack o a un SMS."
        }
      },
      {
        "@type": "Question",
        "name": "Els secrets poden viure en variables d'entorn a la CI?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sí: continua sent la peça adequada per a l'execució de la CI. Feu servir enllaços secrets per al lliurament d'una persona a una altra (donar a l'enginyer la credencial inicial que ha de posar a la caixa forta de la CI), no per al camí de màquina a màquina."
        }
      },
      {
        "@type": "Question",
        "name": "Com gestiono la rotació amb scripts?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Genereu una credencial nova al sistema d'origen, poseu-la en un enllaç d'un sol ús, envieu l'enllaç i deixeu que el destinatari la desi al seu gestor o a la caixa forta de la CI. No reutilitzeu enllaços entre rotacions: cada rotació té el seu propi enllaç."
        }
      },
      {
        "@type": "Question",
        "name": "El secret no acabarà a l'historial de l'intèrpret d'ordres o a la llista de processos?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Aquest és el risc real dels scripts fets sense cura: mentre l'ordre s'executa, la resta d'usuaris locals poden veure'n els arguments amb ps, i els intèrprets interactius escriuen fitxers d'historial. Passeu el contingut per l'entrada estàndard (curl -d @-) i deseu les claus d'API en variables d'entorn, mai en opcions de l'ordre."
        }
      },
      {
        "@type": "Question",
        "name": "Com puc confirmar que el destinatari ha rebut de debò la credencial?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Consulteu la cronologia d'auditoria del secret. Un esdeveniment de visualització o de destrucció amb data i hora confirma el lliurament; un secret que caduca sense cap visualització vol dir que el lliurament ha fallat. Revoqueu-lo i torneu-lo a generar en lloc de fer suposicions."
        }
      }
    ],
    "inLanguage": "ca"
  },
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "@id": "https://uselinkpilot.com/#software",
    "name": "LinkPilot",
    "applicationCategory": "BusinessApplication",
    "operatingSystem": "Web",
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "url": "https://uselinkpilot.com",
    "offers": [
      {
        "@type": "Offer",
        "name": "Free",
        "price": "0",
        "priceCurrency": "USD",
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro",
        "price": "29",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "29",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency",
        "price": "299",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "299",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus",
        "price": "799",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "799",
          "priceCurrency": "USD",
          "billingDuration": "P1M"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Pro (yearly)",
        "price": "288",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "288",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency (yearly)",
        "price": "2988",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "2988",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Agency Plus (yearly)",
        "price": "7980",
        "priceCurrency": "USD",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "7980",
          "priceCurrency": "USD",
          "billingDuration": "P1Y"
        },
        "url": "https://uselinkpilot.com/pricing"
      },
      {
        "@type": "Offer",
        "name": "Enterprise",
        "priceSpecification": {
          "@type": "PriceSpecification",
          "priceCurrency": "USD"
        },
        "url": "https://uselinkpilot.com/pricing"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://uselinkpilot.com/#organization",
    "name": "LinkPilot",
    "alternateName": "LinkPilot by TetraCore",
    "url": "https://uselinkpilot.com",
    "contactPoint": {
      "@type": "ContactPoint",
      "contactType": "customer support",
      "email": "support@uselinkpilot.com",
      "url": "https://uselinkpilot.com/support"
    },
    "parentOrganization": {
      "@type": "Organization",
      "@id": "https://tetracorehq.com/#organization",
      "name": "TetraCore",
      "url": "https://tetracorehq.com/"
    },
    "logo": {
      "@type": "ImageObject",
      "url": "https://uselinkpilot.com/logo-512.png",
      "width": 512,
      "height": 512
    },
    "description": "LinkPilot is a secure link management platform for creating branded short links, tracking engagement, and sharing secrets with expiring, protected, self-destructing links.",
    "sameAs": [
      "https://x.com/uselinkpilot",
      "https://www.linkedin.com/company/uselinkpilot",
      "https://facebook.com/uselinkpilot",
      "https://github.com/TetraCoreHQ/linkpilot-cli",
      "https://github.com/TetraCoreHQ/linkpilot-mcp",
      "https://www.npmjs.com/package/linkpilot",
      "https://www.npmjs.com/package/@uselinkpilot/sdk",
      "https://www.npmjs.com/package/@uselinkpilot/mcp",
      "https://chromewebstore.google.com/detail/linkpilot-short-links-and/mnmppadihpcncicldpkmgknhnjkondad",
      "https://addons.mozilla.org/en-US/firefox/addon/uselinkpilot/"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "LinkPilot",
    "url": "https://uselinkpilot.com",
    "potentialAction": {
      "@type": "SearchAction",
      "target": "https://uselinkpilot.com/blog?q={search_term_string}",
      "query-input": "required name=search_term_string"
    }
  }
]
```