Oppaat

Näin pidät API-avaimet turvassa sovelluksessasi

Pidä API-avaimet turvassa tallentamalla ne salaisuuksina tai ympäristömuuttujina isäntäpalvelussasi, käyttämällä niitä vain palvelinpuolen koodissa ja liittämättä niitä koskaan chattiin, kooditiedostoihin, kuvakaappauksiin tai Git-repositorioon. Anna jokaiselle avaimelle vain tarvittavat oikeudet, aseta kulurajat palveluntarjoajalle ja jos avain vuotaa, vaihda se: luo uusi ja poista vanha sen sijaan, että vain piilottaisit paikan, johon se ilmestyi.

API-avain on palvelun salasana. OpenAI-avaimesi antaa jollekulle mahdollisuuden käyttää rahaasi tekoälyyn, Stripen salainen avain mahdollistaa hyvitykset ja sähköpostipalvelun avain lähettää postia puolestasi. Tekoälysovellusrakentajat osaavat kytkeä nämä hyvin, mutta eivät aina ole huolellisia sen suhteen, minne ne päätyvät. Tämä opas kertoo, miten pidät ne turvassa ja miten tarkistat sen.

Julkiset avaimet ja salaiset avaimet

Kaikki avaimet eivät ole salaisia. Eron tunteminen estää paniikin väärästä avaimesta ja oikean avaimen laiminlyönnin.

TyyppiEsimerkkejäVoiko se olla selaimessa?
Julkaistavat / julkiset avaimetStripen pk_…-avain, karttapalvelun avain omaan verkkotunnukseen rajattuna, joitakin analytiikkatunnuksiaKyllä, se on suunniteltu siihen
Salaiset avaimetStripen sk_…, OpenAI- ja Anthropic-avaimet, sähköpostipalvelun avaimet, tietokantojen salasanatEi koskaan
Palvelu- ja ylläpitoavaimetAvaimet, jotka ohittavat hallitun tietokannan käyttösäännötEi koskaan; käsittele arkaluonteisimpina

Jos et ole varma, mihin tyyppiin avain kuuluu, tarkista palveluntarjoajan dokumentaatio. Epävarmassa tilanteessa käsittele avainta salaisena.

Vaihe 1: Tallenna avaimet salaisuuksina, älä koodiin

Avaimet kuuluvat isäntäpalvelusi ympäristömuuttujiin tai salaisuusasetuksiin. Koodisi lukee ne nimellä ajon aikana (esimerkiksi process.env.OPENAI_API_KEY), joten arvo ei näy tiedostoissasi. Taustaa varten katso mitä ympäristömuuttujat ja salaisuudet ovat.

Siirrä jokainen API-avain koodista ympäristömuuttujiin. Listaa jokainen löytämäsi avain, tiedosto, jossa se oli, ja käyttämäsi muuttujan nimi. Älä näytä arvoja.

Tarkista sen jälkeen, ettei mitään ole jäljellä:

Etsi koko projektista, myös konfiguraatiotiedostoista ja mahdollisista .env-tiedostoista, kaikki, mikä näyttää API-avaimelta tai salasanalta. Raportoi tiedosto ja rivi, älä arvoa.

Vaihe 2: Käytä salaisia avaimia vain palvelimella

Tämä on tärkein sääntö. Kaikki, minkä selain vastaanottaa, on vierailijan luettavissa. Sivun lähdekoodi ja JavaScript-tiedostot näkyvät kehittäjätyökaluissa.

Jos sovelluksen täytyy kutsua OpenAI:ta, selaimen pitää kutsua sinun palvelintasi, ja palvelimesi kutsuu OpenAI:ta avaimella. Avain ei koskaan poistu palvelimelta.

Chat-ominaisuus kutsuu OpenAI:ta suoraan selaimesta. Siirrä kutsu palvelinpuoliseen API-reittiin, joka lukee OPENAI_API_KEY-muuttujan ympäristöstä. Selaimen pitää kutsua vain meidän reittiämme. Vaadi reitille kirjautuminen.

Varoitus yleisestä ansasta frontend-kehyksissä: muuttujat, joilla on julkinen etuliite, eli VITE_ Vitessä ja NEXT_PUBLIC_ Next.js:ssä, rakennetaan tarkoituksella selaimen koodiin. Salainen avain tällaisella etuliitteellä on julkinen, vaikka se on "ympäristömuuttujassa".

Vaihe 3: Testaa, ettei mitään vuoda

Älä luota siihen, että se toimi, vaan tarkista julkaistu sivu:

  1. Avaa julkaistu sovellus selaimessa.
  2. Avaa kehittäjätyökalut ja Sources- tai Network-välilehti.
  3. Etsi tiedostoista kunkin salaisen avaimen ensimmäiset merkit (esimerkiksi sk_ tai sk-).
  4. Tarkista sovelluksen verkkopyynnöt. Pyyntö, joka menee suoraan selaimesta maksulliselle tekoälypalveluntarjoajalle, on varoitusmerkki.

Jos löydät salaisen avaimen, siirrä se palvelimelle (vaihe 2) ja vaihda se (vaihe 6), koska se oli jo julkinen.

Vaihe 4: Rajaa, mitä kukin avain voi tehdä

Monet palveluntarjoajat antavat rajoittaa avainta:

  • Rajatut avaimet, joilla voi tehdä vain sovelluksen tarvitsemat asiat. Stripe esimerkiksi tukee rajattuja avaimia, joilla on tietyt oikeudet.
  • Verkkotunnus- tai IP-rajoitukset avaimille, jotka täytyy olla julkisia, kuten karttapalvelujen avaimet.
  • Erilliset avaimet jokaiselle sovellukselle ja ympäristölle, jotta yksi vuoto ei paljasta kaikkea ja yhden peruuttaminen ei riko muita.
  • Testiavaimet rakentaessa ja aidot avaimet vain julkaistussa sovelluksessa.

Vaihe 5: Aseta katto vahingoille

Jopa hyvin suojattua avainta voi väärinkäyttää sovelluksesi kautta. Esimerkiksi joku voi skriptata tekoälyominaisuutesi tuhansia kertoja.

  • Aseta kulurajat tai hälytykset jokaiselle maksulliselle palveluntarjoajalle.
  • Vaadi kirjautuminen jokaiselle ominaisuudelle, joka maksaa kutsua kohden.
  • Lisää käyttäjäkohtainen nopeusraja. Katso mitä nopeusrajoitus on.

Lisää raja: 30 tekoälypyyntöä per käyttäjä tunnissa reitille /api/chat. Näytä selkeä viesti, kun raja täyttyy. Hylkää pyynnöt käyttäjiltä, jotka eivät ole kirjautuneet.

Vaihe 6: Vaihda vuotaneet avaimet

Jos salainen avain ilmestyy paikkaan, johon sen ei pitäisi päätyä, kuten chat-viestiin, commitiin, kuvakaappaukseen, tukipyyntöön tai selainkoodiin, oleta, että se on vaarantunut.

  1. Luo uusi avain palveluntarjoajalla.
  2. Päivitä salaisuus sovelluksesi asetuksissa.
  3. Julkaise tai ota uudelleen käyttöön, jotta julkaistu sovellus käyttää uutta avainta.
  4. Poista vanha avain palveluntarjoajalta.
  5. Tarkista palveluntarjoajan käyttölokit toiminnan varalta, jota et tunnista.

Chat-viestin tai Git-commitin poistaminen ei riitä. Git-historia säilyttää vanhat versiot, ja kaikki julkinen on voitu jo kopioida.

Yleisiä virheitä

  • Avaimen liittäminen kehotteeseen. Se on nyt chat-historiassa. Käytä sen sijaan salaisuuslomaketta.
  • Julkinen etuliite salaisella muuttujalla. VITE_OPENAI_API_KEY toimittaa avaimen jokaiselle vierailijalle.
  • .env-tiedoston commitointi. Varmista, että se on .gitignore-tiedostossa ennen ensimmäistä pushia.
  • Yksi avain kaikkialla. Käytä erillisiä avaimia testiin ja tuotantoon sekä jokaiselle sovellukselle.
  • Ei kulurajaa. Vuotanut tai väärinkäytetty avain ilman rajaa voi kasvattaa suuren laskun, ennen kuin huomaat sen.
  • Piilottaminen vaihtamisen sijaan. Kun avain on altistunut, vain uusi avain korjaa tilanteen.
  • Avaimet kuvakaappauksissa. Rajaa tai sumenna asetussivut ennen kuin jaat ne avun saamiseksi.

Tarkistuslista

  • Jokainen avain on tallennettu salaisuutena tai ympäristömuuttujana, ei koodiin.
  • Yhtään .env-tiedostoa tai avainta ei ole commitoitu Gitiin.
  • Salaisia avaimia käytetään vain palvelinpuolen koodissa.
  • Yksikään salainen muuttuja ei käytä julkista etuliitettä kuten VITE_ tai NEXT_PUBLIC_.
  • Olen etsinyt julkaistun sivun JavaScriptistä jokaisen avaimen etuliitteen eikä löytänyt mitään.
  • Avaimet on rajattu, missä palveluntarjoaja sen sallii.
  • Testi- ja aidot avaimet ovat erillään.
  • Maksulliset ominaisuudet vaativat kirjautumisen ja niillä on käyttäjäkohtaiset rajat.
  • Jokaisella maksullisella palveluntarjoajalla on kattokulu tai hälytys.
  • Tiedän, miten jokainen avain vaihdetaan, ja kaikki kerran altistuneet avaimet on vaihdettu.

Avainten turvaaminen Mythexissä

Mythex pitää avaimet poissa koodistasi ja chatistasi kahdella tavalla:

  • Salaisuuspyyntökortti. Kun agentti tarvitsee avaimen, se näyttää chatissa kortin, jossa arvo syötetään lomakekenttiin eikä viestikenttään. Arvo tallennetaan projektin salaisuutena. Katso Salaisuudet chatissa.
  • Projektin asetukset → Salaisuudet tai chatin /secrets, joilla lisäät tai muutat avaimia itse. Katso Ympäristömuuttujat ja salaisuudet.

Kun vaihdat julkaistun sovelluksen salaisuuden, julkaise uudelleen, jotta live-sovellus ottaa sen käyttöön. Viedyt projektit jättävät salaisuudet pois, joten lisää ne uudelleen aina, kun ajat koodin jossain muualla. Jos avain ilmestyy koskaan chattiin, vaihda se palveluntarjoajalla.

Loput julkaisua edeltävästä turvatarkistuksesta käy läpi tekoälyllä rakennettujen sovellusten tietoturvatarkistuslista. Jos lisäät tekoälyominaisuuksia, näin käytät LLM-rajapintoja käsittelee avaimia ja kustannuksia syvemmin.

Kysymykset

Onko API-avaimen laittaminen frontend-koodiin turvallista?

Vain jos palveluntarjoaja on suunnitellut avaimen julkiseksi, kuten Stripen julkaistava avain tai karttapalvelun avain, joka on rajattu omaan verkkotunnukseesi. Jokainen avain, jolla voi käyttää rahaa tai lukea yksityistä dataa, pitää pysyä palvelimella, koska kaikki selaimelle lähetetty voi lukea kuka tahansa.

Mitä teen, jos liitin API-avaimen chattiin tai julkiseen repositorioon?

Vaihda avain: luo uusi avain palveluntarjoajalla, päivitä sovelluksesi salaisuudet, julkaise uudelleen ja poista sitten vanha avain. Viestin tai commitin poistaminen ei riitä, koska kopioita on voinut jo syntyä.

Minne API-avaimet pitäisi tallentaa?

Isäntäpalvelusi ympäristömuuttujiin tai salaisuusasetuksiin, joita palvelinpuolen koodi lukee ajon aikana. Niitä ei pidä kirjoittaa lähdekoodiin, commitoida Gitiin tai sisällyttää kuvakaappauksiin.

Miten huomaan, onko API-avaimeni julkinen verkkosivullani?

Avaa julkaistu sivusi, katso sivun lähdekoodi ja JavaScript-tiedostot selaimen kehittäjätyökaluissa ja etsi avaimen alkua. Jos se löytyy, avain on julkinen. Siirrä se palvelimelle ja vaihda se.

Mythex · Pricing · Rakenna mitä tahansa tekoälyllä · Verkkosivu- ja sovellusmallipohjat · Mythex vertailussa · Tekoälysovellusten rakentamisen sanasto · Ilmaiset työkalut tekoälysovellusten rakentamiseen · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)