Skip to content
LearnOne-time link

What is a one-time link for sharing secrets?

Also known asself-destructing linkexpiring linksingle-view link
Example. Kiteline is a fictional company.
On this page

A one-time link is a URL that delivers a secret to someone and then stops working, after a single view or a short time, so the secret does not sit in a chat history or inbox where anyone with later access can read it.

When you paste a password into chat or email, it stays there, searchable, for as long as the message exists. A link that expires leaves only a dead URL behind. The idea is simple; two details decide whether it is actually safe.

Where the decryption key lives. A good design encrypts the secret in the sender's browser and puts the key in the URL fragment, the part after #. RFC 3986 specifies that the fragment is separated from the URL before it is dereferenced and is handled only by the client. Browsers don't send it in the request, so the server stores ciphertext and never sees the key.

What counts as "opening." Chat apps and email scanners often fetch links to build previews. If the link is used up on the first request, a preview bot can use it up before the person does. A careful design waits for an explicit click.

How Crunu does it

Crunu's share links give selected files of an environment to someone without a Crunu account, such as Luis, an outside contractor at Kiteline. Kiteline is a fictional company.

  • The key stays in the fragment. The link's decryption key is in the part after #, which the server never sees.
  • Signed contents. The files are signed with the link's key, so any substitution shows.
  • Opening needs a click. The link is used only when the recipient presses Open, so a messenger preview doesn't spend it. Decrypted content lives only in the page's memory.
  • Optional password. Without it, the ciphertext cannot be downloaded. Guessing can only happen online, under rate limits.

There are two link types:

  • Expiring. It has a time limit (up to 365 days) and a view limit (up to 1,000, including once). After that, the link no longer works. This is Crunu's version of a one-time link; "expiring" is the more accurate name, since the limit can be higher than one.
  • Live. The recipient sees the latest version of the files until the link is revoked. It has no expiration.

Every link can be revoked, shows its status and counts its views. Each account can create up to 100 new links a day, and a network-restricted environment can block links entirely.

See share a file with a contractor and share links.

Sources

From the blog

  • Teams

    An offboarding checklist for engineering teams

    Removing an account takes seconds. Secrets outlive it. A practical checklist for engineering offboarding, from sessions and tokens to reissuing values.

  • Teams

    Sharing a secret with a contractor safely

    Contractors need real credentials for real work. How to hand one over without leaving it in chat forever, and how to end their access cleanly afterwards.

  • Security

    One key per environment: why dev must not open prod

    Most tools separate dev and prod with permissions the server enforces. Why the boundary is stronger when each environment has its own encryption key.