Node.js: Tvarkyti slaptažodžius
Kaip tvarkyti slaptažodžius su Node.js
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Node.js cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įdiekite savo programą per kelias sekundes su paprastu
git push.- Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
- Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
- Gaukite optimalią veikimo ir tvirtą saugumą dėka privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Node.js cloud hosting sprendimą užtrunka tik 5 minutes!
Kai jūsų Node.js projektas sąveikauja su duomenų baze, objektų saugykla ar išorine API, labai svarbu saugiai laikyti prisijungimo duomenis, tokius kaip vartotojo vardai, slaptažodžiai ar žetonai, dažnai vadinamus "slaptažodžiais". Šių slaptažodžių konfidencialumas yra esminis saugumui palaikyti.
Ką galėtumėte būti linkę daryti
Iš pradžių galite apsvarstyti kažką panašaus į tai:
// Prisijungimas prie PostgreSQL duomenų bazės
const pg = new Client({
host: 'xxxxx.stackhero-network.com',
user: 'admin',
password: 'myPassword',
database: 'admin'
});
Deja, šis metodas nėra saugus. Kodėl? Nes jūsų slaptažodžiai gali patekti į jūsų Git saugyklą, atskleidžiant juos visiems, turintiems prieigą. Net jei manote, kad tik jūs turite prieigą, tai prilygsta palikti Post-it su slaptažodžiais ant monitoriaus ir manyti, kad niekas kitas jų nepamatys. Tai gali sukelti saugumo problemų.
Be to, šis požiūris nepalaiko sklandaus skirtingų aplinkų, tokių kaip kūrimo ir gamybos, valdymo.
Aplinkos kintamieji
Plačiai pripažinta pramonės praktika yra laikyti slaptažodžius aplinkos kintamuosiuose.
Aplinkos kintamieji apibrėžiami už jūsų kodo ribų ir nustatomi prieš pradedant Node.js. Koncepcija yra apibrėžti visus savo slaptažodžius naudojant aplinkos kintamuosius, vengiant jų kietojo kodavimo į jūsų programą.
Pirmųjų aplinkos kintamųjų apibrėžimas
Norėdami apibrėžti aplinkos kintamąjį, galite jį nustatyti Node.js paleidimo pradžioje taip: MY_PASSWORD=myDevelopmentPassword node app.js
Ši komanda nustato kintamąjį pavadinimu "MY_PASSWORD" su verte "myDevelopmentPassword". Formatas yra paprasčiausiai <KEY>=<value>.
Pagal konvenciją aplinkos kintamieji rašomi didžiosiomis raidėmis. Atkreipkite dėmesį, kad gali būti naudojamos tik eilutės, ne masyvai ar objektai.
Aplinkos kintamųjų skaitymas
Savo app.js faile galite skaityti naują aplinkos kintamąjį su process.env taip: console.log(process.env.MY_PASSWORD);. Tai parodys myDevelopmentPassword.
Dabar slaptažodis apibrėžtas už kodo ribų, neleidžiant jo publikuoti Git saugykloje.
Stackhero gamybos aplinkoje turite galimybę apibrėžti naują aplinkos kintamąjį pavadinimu "MY_PASSWORD", kuriame yra "myProductionPassword", tiesiogiai jūsų Node.js paslaugos prietaisų skydelyje, užtikrinant sklandų veikimą.
Node.js konfigūracijos pavyzdys Stackhero prietaisų skydelyje
Apibendrinant, jūsų slaptažodis nebėra saugomas jūsų kode, ir jūs turite atskirus slaptažodžius kūrimo ir gamybos aplinkoms.
Naudojant dotenv biblioteką
Realiuose scenarijuose dažnai reikia valdyti kelis slaptažodžius. Pavyzdžiui, prisijungimas prie duomenų bazės reikalauja laikyti pagrindinio kompiuterio vardą, vartotoją ir slaptažodį.
Vieno slaptažodžio valdymas yra paprastas, bet kelių valdymas gali tapti sudėtingas. Įsivaizduokite, kad paleidžiate savo programą su šia komanda:
POSTGRESQL_HOST=xxxxx.stackhero-network.com POSTGRESQL_USER=admin POSTGRESQL_PASSWORD=myPassword node app.js
Ši eilutė yra nepatogi ir sunkiai prižiūrima. Gamybos programa gali reikalauti daugybės kintamųjų, todėl šis požiūris yra nepraktiškas.
Čia dotenv biblioteka tampa neįkainojama.
Su dotenv slaptažodžiai gali būti saugomi atskirame faile, vadinamame .env.
Pirmiausia galite įdiegti dotenv biblioteką su:
npm install dotenv
Tada sukurkite .env failą, kuriame yra kintamieji:
POSTGRESQL_HOST=xxxxx.stackhero-network.com
POSTGRESQL_USER=admin
POSTGRESQL_PASSWORD=myPassword
Įsitikinkite, kad šis .env failas nėra įtrauktas į Git saugyklą, pridėdami jį prie ignoruojamų failų sąrašo:
echo ".env" >> .gitignore
Galiausiai, įkelkite dotenv biblioteką savo app.js failo viršuje taip:
require("dotenv").config();
Su šia konfigūracija, paleidžiant savo programą su node app.js, dotenv automatiškai perskaitys .env failo turinį jūsų kūrimo platformoje. Gamyboje šis failas neegzistuoja, o aplinkos kintamieji yra tiesiogiai gaunami iš jūsų Node.js paslaugos konfigūracijos (prieinama Stackhero prietaisų skydelyje).
Veikiantis pavyzdys
Visa tai buvo teorija. Panagrinėkime realų veikiantį pavyzdį.
Visą pavyzdį galite rasti čia: https://github.com/stackhero-io/dotenvWithNodejs
Dabar žinote, kaip tvarkyti savo slaptažodžius lanksčiai ir saugiai, viską labai lengvai.