.env.example — raktas pakuotėje
Kodo stulpelyje — .env.example. Atkreipk dėmesį: jame komentaruose surašyta visa saugumo pamoka. Tai ne atsitiktinumas — tai vieta, kur būsimas programuotojas ją perskaitys.
.env failo darbo eiga:
cp .env.example .env # nusikopijuoji šabloną
# ...įrašai savo raktą į .env...
# .env yra .gitignore — niekada nepatenka į git
Patikrink — ir tai svarbiausias šios pamokos veiksmas. Surink ir rask raktą pakuotėje:
npm run build
grep -r "VITE_NASA_API_KEY\|DEMO_KEY" dist/assets/
# → dist/assets/index-a1b2c3.js: ...api_key=DEMO_KEY...
Tavo raktas — atviru tekstu produkcijos faile, kurį serveruoji visam pasauliui. Bet kas, atidaręs DevTools → Network arba Sources, jį pamatys. Nėra būdo to „paslėpti" front-end kode — nes naršyklei tą kodą reikia įvykdyti, o vadinasi, ir perskaityti.
Kada tai gerai, kada ne:
| Raktas | Ar galima į front-end? |
|---|---|
| NASA APOD (viešas, ribojamas kvota) | Taip — tam ir sukurtas |
Stripe publishable key (pk_...) |
Taip — jis viešas pagal dizainą |
Stripe secret key (sk_...) |
NIEKADA — serveryje |
| DB slaptažodis, siuntimų API raktas | NIEKADA — serveryje |
Diegimas. dist/ įkeli į statinį hostingą. Aplinkos kintamuosius nustatai hostingo skydelyje (ne .env faile, kuris liko lokaliai).
Spąstai (paslaptis
.envfaile NĖRA paslėpta). Dažna klaida: „įdėsiu slaptą raktą į.env— juk.envne git'e, vadinasi saugu". Ne..gitignoreslepia raktą tik nuo git, bet Vite jį vis tiek įrašo į pakuotę perimport.meta.env.VITE_.....envapsaugo nuo atsitiktinio komito, ne nuo pakuotės. Vienintelis būdas išlaikyti raktą slaptą — jo niekada nesiųsti į naršyklę: laikyti serveryje, kuris tarpininkauja.