---
title: "Näin kertakäyttöiset salaiset linkit toimivat | LinkPilot-blogi"
url: https://uselinkpilot.com/fi/blog/how-one-time-secret-links-work
description: "Kertakäyttölinkki näyttää sisältönsä kerran. Selain salaa sen, palvelin tallentaa vain salatekstin ja ensimmäinen avaus tuhoaa tallennetun kopion."
lang: fi
---

Tietoturva (https://uselinkpilot.com/fi/blog/category/security)

# Näin kertakäyttöiset salaiset linkit toimivat

Kertakäyttölinkki näyttää sisältönsä kerran. Selain salaa sen, palvelin tallentaa vain salatekstin ja ensimmäinen avaus tuhoaa tallennetun kopion.

W. Miller (https://uselinkpilot.com/fi/author/w-miller)26. toukokuuta 2026 · Päivitetty 22. lokakuuta 2026 · Tietoa LinkPilotista (https://uselinkpilot.com/fi/about)

Kertakäyttöinen salainen linkki on URL-osoite, joka näyttää sisältönsä täsmälleen kerran ja lakkaa sen jälkeen pysyvästi toimimasta. Lähettäjän selain salaa salaisuuden AES-GCM-256-salauksella, palvelin tallentaa vain salatekstin ja avain kulkee linkin #-merkin jälkeisessä osassa (`#k=`), jota selaimet eivät koskaan lähetä. Kun vastaanottaja avaa salaisuuden ensimmäisen kerran, sama toiminto purkaa salauksen ja tuhoaa tallennetun kopion.

Sellaisen voi tehdä ilman tiliä ilmaisella salaisten linkkien luontityökalulla (https://uselinkpilot.com/fi/tools/free-secret-link-generator).

Mekanismi on yksinkertainen, mutta kiinnostavaksi sen tekevät erikoistapaukset. Juuri niissä huolimattomat toteutukset vuotavat huomaamatta.

## Perusvaiheet

1. Lähettäjä liittää salaisuuden. Selain luo satunnaisen avaimen, salaa sisällön AES-GCM-256-salauksella Web Crypto API:n (https://www.w3.org/TR/WebCryptoAPI/) avulla ja lähettää vain salatekstin. Palvelin tallentaa sen satunnaisen, vaikeasti arvattavan polkutunnuksen alle ja palauttaa URL-osoitteen. Selain lisää avaimen osoitteen loppuun #-merkin jälkeiseen osaan muodossa `#k=`. Tämä osa ei koskaan poistu lähettäjän laitteelta.
2. Lähettäjä jakaa URL-osoitteen millä tahansa kanavalla: sähköpostilla, pikaviestimellä tai tekstiviestillä.
3. Vastaanottaja avaa URL-osoitteen. Pelkkä `GET`-pyyntö palauttaa vain tilan. Kun vastaanottaja napsauttaa näyttämispainiketta, palvelin merkitsee salaisuuden käytetyksi ja palauttaa salatekstin samassa toiminnossa, jota ei voi jakaa osiin. Vastaanottajan selain purkaa salauksen #-merkin jälkeisessä osassa olevalla avaimella.
4. Jokainen myöhempi käynti saa sisällön sijaan tilasivun, jonka mukaan salaisuus on tuhoutunut.

Ratkaiseva on vaihe 3. Jos lukeminen ja tilan päivitys tehdään kahtena erillisenä kyselynä (ensin `SELECT` tarkistaa, sitten `UPDATE` merkitsee), kaksi samanaikaista katsojaa voi kumpikin läpäistä tarkistuksen, ennen kuin kumpikaan kirjoittaa. Molemmat saavat sisällön. Tämä on klassinen TOCTOU-virhe (time-of-check to time-of-use), ja se muuttaa lupauksen ”täsmälleen kerran” muotoon ”yleensä kerran”.

## Miksi lukeminen ja tuhoaminen on tehtävä yhtenä vaiheena?

Muuten kaksi samanaikaista katsojaa voi kumpikin läpäistä tarkistuksen, ennen kuin kumpikaan merkitsee salaisuuden käytetyksi. Korjaus on yhdistää tarkistus, merkintä ja lukeminen yhdeksi tietokantatoiminnoksi. Postgresissa se näyttää tältä, kun käytetään lausetta `UPDATE ... RETURNING` (https://www.postgresql.org/docs/current/sql-update.html):

```sql
UPDATE secrets
SET burned_at = now()
WHERE slug = $1
  AND burned_at IS NULL
  AND expires_at > now()
RETURNING payload;
```

`UPDATE`-lauseen ottama rivitason lukitus pakottaa samanaikaiset kutsujat jonoon: ensimmäinen täyttää `WHERE`-ehdon, asettaa sarakkeen `burned_at` ja saa sisällön takaisin `RETURNING`-osan kautta. Jokainen myöhempi kutsuja huomaa, että `burned_at` on jo asetettu, ei osu yhteenkään riviin ja saa tuhoutuneen tilan. Tarkistuksen ja käyttämisen välissä ei ole aukkoa, koska ne ovat sama lause.

LinkPilot kirjaa avaukset juuri tästä syystä tietokantafunktiolla, joka lukee ja merkitsee samalla hetkellä: samanaikaiset näyttämisyritykset eivät voi vuotaa salaisuutta kahdesti. Jos arvioit työkalua, tätä on aivan aiheellista kysyä suoraan toimittajalta: _tapahtuvatko lukeminen ja tuhoaminen yhtenä vaiheena, jota ei voi jakaa osiin?_

## Miksi tuhoutuneet linkit palauttavat HTTP 410:n eivätkä 404:ää?

410 Gone (https://www.rfc-editor.org/rfc/rfc9110#section-15.5.11) kertoo, että resurssi on ollut olemassa ja on pysyvästi poissa, ja juuri sitä tuhoutunut salaisuus on. Käytetyn linkin pitää epäonnistua selvästi ja pysyvästi. LinkPilot tekee tuhoutumisen yhteydessä kaksi asiaa:

- Tallennettu sisältö **korvataan** merkkijonolla `[REDACTED]` samassa kirjoituksessa, joka vaihtaa tilan. Siksi edes myöhempi tietokantamurto ei palauta käytettyä salaisuutta.
- Myöhemmät näyttämisyritykset palauttavat vastauksen **HTTP 410 Gone** ja selkeän sivun, jonka mukaan sisältö on jo avattu ja tuhottu.

410 on oikea tilakoodi: se tarkoittaa, että resurssi on ollut olemassa ja on tarkoituksella ja pysyvästi poissa. 404 taas sanoo, ettei resurssista ole koskaan kuultukaan. Ero on tärkeä myös ihmisille. Vastaanottaja, joka näkee ilmoituksen ”tämä salaisuus on jo avattu”, tietää kertoa asiasta lähettäjälle. Lähettäjä voi tarkistaa tarkastuslokin ja vaihtaa tunnukset, jos avaaja ei ollut vastaanottaja.

## Vaikeasti arvattavat polkutunnukset ja miksi ne eivät riitä

Polkutunnus on ainoa asia julkisen internetin ja vielä avaamattoman salatekstin välissä (avain on #-merkin jälkeisessä osassa, ei palvelimella), joten siinä on oltava todellista entropiaa. Esimerkiksi 22 merkin base62-polkutunnus, joka on poimittu kryptografisesti turvallisesta satunnaislähteestä, sisältää noin 128 bittiä. Läpikäynti ei ole realistinen hyökkäys millään pyyntötahdilla, jonka palvelin kestäisi.

Polkutunnuksen entropia suojaa kuitenkin vain _arvaamiselta_. Se ei auta mitään, jos URL-osoite _nähdään_: selainhistoria, välityspalvelinten lokit, edelleenlähetetyt sähköpostit, näytönjaot ja leikepöydän hallintaohjelmat. Siksi vakavasti otettavat toteutukset lisäävät kerroksia:

- **Voimassaoloaika**, jotta nähty URL-osoite lakkaa toimimasta aikataulun mukaan.
- **Salalause**, jotta pelkkä nähty URL-osoite ei riitä.
- **Tuhoutuminen lukemisen jälkeen**, jotta nähty URL-osoite on arvoton oikean lukemisen jälkeen.

## Linkkien esikatselut ja botit

Pikaviestinsovellukset (Slack, Teams, iMessage) ja sähköpostin tietoturvaskannerit avaavat URL-osoitteista esikatselun hakemalla ne `GET`-pyynnöllä heti, kun viesti toimitetaan. Jos näyttämisen päätepiste tuhoaa salaisuuden `GET`-pyynnöstä, esikatselutoiminto tuhoaa sen ennen kuin ihminen ehtii nähdä sen. Tämä on yksinkertaisten ”tuhoutuu lukemisen jälkeen” -työkalujen yleisin todellinen vika.

Suojaukset, sellaisina kuin LinkPilot ne toteuttaa:

- **Metatiedot ja näyttäminen ovat erillisiä toimintoja.** Näyttämisen päätepisteeseen tehty `GET` palauttaa vain tilan ja tiedon siitä, tarvitaanko salalausetta. Avaus kirjataan vain erillisestä `POST`-pyynnöstä, jonka ihminen tekee napsauttaessaan näyttämispainiketta.
- **Salalausesuojaus (Pro).** Kun salalause on asetettu, sisältöä ei palauteta kenellekään, botille tai ihmiselle, ilman oikeaa tiivistettä.
- **`Cache-Control: no-store`** jokaisessa näyttämisvastauksessa, jotta välityspalvelimet eivät koskaan tallenna salaisuuden sisältöä välimuistiin.

LinkPilotin tietoturva-arkkitehtuurisivu (https://uselinkpilot.com/fi/security-architecture) kuvaa tämän käsittelyn alusta loppuun.

## Elinkaari tila tilalta

| Tila | Laukaisija | Mitä kävijä näkee | Voiko sisällön palauttaa? |
| --- | --- | --- | --- |
| Aktiivinen | Luonti | Näyttämissivu (salalausekysely, jos asetettu) | Kyllä: yksi avaus jäljellä |
| Tuhoutunut | Avauskertojen raja täyttyy | ”Jo avattu ja tuhottu”, HTTP 410 | Ei: sisältö korvattu |
| Vanhentunut | Voimassaoloaika päättyy | Vanhentuneen linkin tilasivu | Ei: sisältö korvataan seuraavalla käyttökerralla |
| Mitätöity | Lähettäjä mitätöi linkin hallintapaneelista | Sisältöä ei näytetä, HTTP 410 | Ei: välittömästi ja pysyvästi |

Jokainen tilasiirtymä kirjautuu tarkastuslokiin (loki linkin tapahtumista), joka on LinkPilotissa Pro-ominaisuus. Tapahtumatyypit ovat `created`, `viewed`, `failed_passphrase`, `burned`, `expired` ja `revoked`, ja jokaisessa on aikaleima ja tiivistetty IP-osoite (SHA-256 päivittäin vaihtuvalla suolalla; raakaa IP-osoitetta ei koskaan tallenneta). Tämän lokin ansiosta ”luulen, että hän sai sen” muuttuu muotoon ”avattu klo 10:05 odotetusta maasta, yksi avaus, sitten tuhoutui”.

## Yleiset laajennukset

- **Salalausesuojaus.** Ennen näyttämistä vaaditaan toista kanavaa pitkin lähetetty salalause, joten vuotanut URL-osoite ei yksin tarkoita vuotanutta salaisuutta. LinkPilotissa tämä on Pro-ominaisuus (29 $/kk) samoin kuin mukautettu voimassaoloaika ja tarkastusloki; ilman tiliä toimiva työkalu ei voi asettaa salalausetta. Rajoita yrityksiä: LinkPilot sallii 5 yritystä IP-osoitetta kohden minuutissa salaisuutta kohden ja kirjaa jokaisen epäonnistumisen.
- **Aikaan perustuva voimassaoloaika.** Salaisuus tuhoutuu asetetun ajan jälkeen, vaikka sitä ei olisi luettu. LinkPilotin lomake kirjautuneille tarjoaa vaihtoehdot 1 tunti, 24 tuntia tai 7 päivää kaikissa paketeissa, ja Pro-paketissa voi valita oman päivän ja kellonajan. Ilman tiliä toimiva työkalu asettaa oletuksena 7 päivää. Tämä kattaa tapauksen, jossa linkki unohtuu saapuneet-kansioon, mitä tuhoutuminen lukemisen jälkeen ei kata.
- **Manuaalinen mitätöinti.** Lähettäjä voi mitätöidä lukemattoman salaisuuden hallintapaneelista heti, kun jokin tuntuu olevan vialla. Halpa vakuutus tilanteeseen, jossa linkki lähti väärälle Alexille.

## Erikoistapaukset, jotka erottavat hyvät toteutukset

### Väärä henkilö avaa linkin ensin

Tuhoutuminen lukemisen jälkeen ei estä väärää katsojaa, mutta se tekee virheellisen toimituksen _näkyväksi_. Oikea vastaanottaja päätyy tuhoutuneen linkin sivulle, tarkastusloki näyttää yhden odottamattoman avauksen ja vaihdat tunnukset. Ikävää mutta rajattua: täsmälleen yksi altistus, joka huomataan nopeasti. Pikaviestiin liitetyn salaisuuden kohdalla et saisi sitä koskaan tietää.

### Kuvakaappausongelma

Kertakäyttöinen tarkoittaa yhtä _näyttämistä_, ei yhtä _kopiota_. Vastaanottaja voi ottaa salaisuudesta kuvakaappauksen, kopioida sen tai kirjoittaa sen uudelleen, eikä linkki estä tätä mitenkään. Toimittajat, jotka antavat ymmärtää muuta, myyvät satua. Rehellinen tapa sanoa asia: tuhoutuminen lukemisen jälkeen hallitsee toimituskanavaa, ei vastaanottajaa. Luottamus vastaanottajaan on lähtöoletus, ei lopputulos.

### Selaimen esilataus ja ennakoiva lataaminen

Jotkin selaimet ja sovellukset hakevat etukäteen URL-osoitteita, joita todennäköisesti napsautetaan. Koska hyvin tehty työkalu tuhoaa salaisuuden vain erillisestä `POST`-pyynnöstä, esilataus toimii täsmälleen kuten esikatselutoiminto: se voi hakea sivun rungon, mutta ei koskaan sisältöä.

## Milloin kertakäyttölinkkiä ei kannata käyttää

- **Arvoa tarvitaan uudelleen.** Palautettavuus on salasanojen hallintaohjelman koko suunnittelutavoite ja kertakäyttölinkin vastakohta. Käytä holvin kohdetta.
- **Useat vastaanottajat tarvitsevat sitä.** Yksi linkki, yksi lukeminen. Jos vastaanottajia on monta, joko luot jokaiselle oman linkin (toimii, ja jäljitettävyys säilyy) tai myönnät, että tarvitset sen sijaan jaetun käyttöoikeuksien hallinnan.
- **Käyttäjä on kone.** Palveluiden ja CI-järjestelmien pitää lukea salaisuudet salaisuuksien hallintapalvelusta, ei napsauttaa linkkejä.

Jos haluat nähdä mekanismin toiminnassa, luo linkki ilmaisella salaisten linkkien luontityökalulla (https://uselinkpilot.com/fi/tools/free-secret-link-generator). Tiliä ei tarvita, sisältö salataan selaimessasi ja se katoaa ensimmäisen avauksen jälkeen.

## Lue lisää

- Salasanojen turvallinen jakaminen: 5 tapaa vertailussa: https://uselinkpilot.com/fi/secure-password-sharing
- One-time secret (https://uselinkpilot.com/fi/one-time-secret), kertakäyttölinkki (https://uselinkpilot.com/fi/one-time-link) ja salainen linkki (https://uselinkpilot.com/fi/secret-link): lyhyet sivut, joiden yläosassa on työkalu
- Onko OneTimeSecret turvallinen?: https://uselinkpilot.com/fi/is-onetimesecret-secure
- Parhaat OneTimeSecret-vaihtoehdot: https://uselinkpilot.com/fi/blog/best-onetimesecret-alternatives
- OneTimeSecret vs Privnote vs Password Pusher: https://uselinkpilot.com/fi/blog/onetimesecret-vs-privnote-vs-password-pusher
- Vanhenevat linkit: salaisuus tuhotaan, sitä ei vain ohjata muualle: https://uselinkpilot.com/fi/blog/expiring-links-security
- Ilmainen salaisten linkkien luontityökalu: https://uselinkpilot.com/fi/tools/free-secret-link-generator

## Lähteet

- W3C, Web Cryptography API (https://www.w3.org/TR/WebCryptoAPI/).
- IETF, RFC 3986, section 3.5 Fragment (https://www.rfc-editor.org/rfc/rfc3986#section-3.5).
- IETF, RFC 9110: HTTP Semantics, section 15.5.11 410 Gone (https://www.rfc-editor.org/rfc/rfc9110#section-15.5.11).
- PostgreSQL Documentation, UPDATE (https://www.postgresql.org/docs/current/sql-update.html).

## Työkalut tähän artikkeliin

Kertakäyttöisen salaisen linkin luontityökalu

Jaa salasana tai muistiinpano linkillä, joka avautuu vain kerran.
https://uselinkpilot.com/fi/tools/free-secret-link-generator

Itsetuhoutuva viesti

Lähetä muistiinpano, joka katoaa, kun se on luettu kerran.
https://uselinkpilot.com/fi/tools/burn-after-read-secret

Vanhenevan linkin luontityökalu

Luo linkkejä, jotka lakkaavat toimimasta asettamanasi aikana.
https://uselinkpilot.com/fi/tools/temporary-link

## Usein kysytyt kysymykset

### Mitä tapahtuu, jos kaksi ihmistä avaa linkin samaan aikaan?

### Tuhoaako linkin esikatselu salaisuuden?

### Miksi tuhoutuneet linkit palauttavat HTTP 410:n eivätkä 404:ää?

### Voinko palauttaa tuhoutuneen salaisuuden?

### Voiko palvelin lukea kertakäyttöisen salaisuuden?

### Onko kertakäyttölinkin lähettäminen sähköpostilla turvallista?

## LinkPilot lähettää salaisen linkin, joka katoaa, kun se on avattu.

Salataan selaimessasi, näytetään kerran ja tuhotaan sitten. Tiliä ei tarvita.

Luo salainen linkki (https://uselinkpilot.com/fi/tools/free-secret-link-generator)

## Lue seuraavaksi

Tietoturva

### Vanhenevat linkit: salaisuus tuhotaan, ohjaus ei vain katkea

Vanheneva salainen linkki tuhoaa salaisuuden määräajan päättyessä, kuollut lyhytlinkki vain lakkaa ohjaamasta. Ajan valinta ja erikoistapaukset.
https://uselinkpilot.com/fi/blog/expiring-links-security

Tietoturva

### Selainpuolen salaus salaisuuksien jakamisessa: mitä se suojaa

Selainpuolen salaus suojaa salaisuuden ylläpitäjältä ja tietokantavuodolta, muulta ei: haitallinen JavaScript, laajennus tai vuotanut linkki kumoaa sen.
https://uselinkpilot.com/fi/blog/client-side-encryption-for-secret-sharing

Tietoturva

### Kirjautumistietojen kertajakaminen asiakkaan käyttöönotossa

Digitoimistoille ja IT-palveluyrityksille: lähetä ensimmäinen kirjautuminen kertakäyttölinkkinä, jaa luottamukselliset ohjeet samoin ja kirjaa luovutus.
https://uselinkpilot.com/fi/blog/one-time-credential-sharing-for-client-onboarding

## Structured data

```json
[
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Etusivu",
        "item": "https://uselinkpilot.com/fi"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blogi",
        "item": "https://uselinkpilot.com/fi/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Näin kertakäyttöiset salaiset linkit toimivat",
        "item": "https://uselinkpilot.com/fi/blog/how-one-time-secret-links-work"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "@id": "https://uselinkpilot.com/fi/blog/how-one-time-secret-links-work#article",
    "headline": "Näin kertakäyttöiset salaiset linkit toimivat",
    "description": "Kertakäyttölinkki näyttää sisältönsä kerran. Selain salaa sen, palvelin tallentaa vain salatekstin ja ensimmäinen avaus tuhoaa tallennetun kopion.",
    "inLanguage": "fi",
    "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/fi/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/fi/blog/how-one-time-secret-links-work"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Mitä tapahtuu, jos kaksi ihmistä avaa linkin samaan aikaan?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Oikein toteutettu kertakäyttölinkki lukee salaisuuden ja merkitsee sen käytetyksi yhdessä tietokantatoiminnossa, jota ei voi jakaa osiin, joten täsmälleen yksi katsoja voittaa. Toinen näkee tilan, jonka mukaan salaisuus on tuhoutunut. Jos lukeminen ja merkintä tehdään erikseen, molemmat voivat lukea salaisuuden. Tämä on klassinen TOCTOU-virhe."
        }
      },
      {
        "@type": "Question",
        "name": "Tuhoaako linkin esikatselu salaisuuden?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sen ei pitäisi. Palvelimen pitää tuhota salaisuus vain erillisestä näyttämistoiminnosta (POST), ei metatietojen hausta (GET), jolla pikaviestin- ja sähköpostiohjelmat muodostavat esikatselut. LinkPilotin GET-päätepiste palauttaa vain tilan ja tiedon siitä, tarvitaanko salalausetta."
        }
      },
      {
        "@type": "Question",
        "name": "Miksi tuhoutuneet linkit palauttavat HTTP 410:n eivätkä 404:ää?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "410 Gone tarkoittaa, että resurssi on ollut olemassa ja on tarkoituksella ja pysyvästi poissa. Juuri sitä tuhoutunut salaisuus on. Koodi kertoo asiakasohjelmille ja välimuisteille, ettei sisältö palaa, ja se on rehellinen: linkki oli aito, ja se on käytetty."
        }
      },
      {
        "@type": "Question",
        "name": "Voinko palauttaa tuhoutuneen salaisuuden?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Et voi, ja juuri se on tarkoitus. LinkPilotissa tallennettu salateksti korvataan heti, kun salaisuus tuhoutuu, vanhenee tai mitätöidään, joten palautettavaa ei ole. Jos tarvitset palautettavuutta, käytä salasanojen hallintaohjelmaa ja jaa holvin kohde."
        }
      },
      {
        "@type": "Question",
        "name": "Voiko palvelin lukea kertakäyttöisen salaisuuden?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "LinkPilotissa ei. Salaisuus salataan selaimessasi AES-GCM-256-salauksella ennen lähettämistä. Palvelin tallentaa vain salatekstin, ja salauksen purkuavain kulkee linkin #-merkin jälkeisessä osassa merkkien #k= perässä. Selaimet eivät koskaan lähetä tätä osaa palvelimelle. Kun linkki avataan, palvelin palauttaa salatekstin, ja selaimesi purkaa salauksen. Jokaisella, jolla on koko linkki, on myös avain, ja siksi voimassaoloaika ja tuhoutuminen lukemisen jälkeen ovat edelleen tärkeitä."
        }
      },
      {
        "@type": "Question",
        "name": "Onko kertakäyttölinkin lähettäminen sähköpostilla turvallista?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Kohtuullisen turvallista, jos linkki vanhenee ja sen salalause lähetetään eri kanavaa pitkin. Sähköpostiviestejä skannataan, välitetään eteenpäin ja säilytetään, joten oleta, että itse URL-osoite voi tulla nähdyksi. Salalause ja lyhyt voimassaoloaika estävät nähtyä URL-osoitetta muuttumasta vuotaneeksi salaisuudeksi."
        }
      }
    ],
    "inLanguage": "fi"
  },
  {
    "@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"
    }
  }
]
```