Tema
/
Interneto svetainių kliento dalies kūrimas JS

.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 .env faile NĖRA paslėpta). Dažna klaida: „įdėsiu slaptą raktą į .env — juk .env ne git'e, vadinasi saugu". Ne. .gitignore slepia raktą tik nuo git, bet Vite jį vis tiek įrašo į pakuotę per import.meta.env.VITE_.... .env apsaugo nuo atsitiktinio komito, ne nuo pakuotės. Vienintelis būdas išlaikyti raktą slaptą — jo niekada nesiųsti į naršyklę: laikyti serveryje, kuris tarpininkauja.