Чөйрө конфигурациясы жана сырлар
Сырсөздөрдү, API ачкычтарын жана ар бир чөйрөгө тиешелүү жөндөөлөрдү баштапкы коддон тышкары сактаңыз
.js файлдарга жазуу коопсуз эмес жана ийкемсиз. Чөйрө конфигурациясы бул маанилерди коддон тышкары берүүгө мүмкүндүк берет, ошондуктан бир эле код бардык жерде иштейт жана сырларыңыз эч качан версия көзөмөлүнө түшпөйт.
process.envдан конфигурацияны окуй аласыз,- жергиликтүү жөндөөлөрдү
.envфайлында сактап, аларды dotenv аркылуу жүктөй аласыз, .gitignoreменен.envди Git ге киргизбей, коопсуз.env.exampleди жеткире аласыз,- иштетүүдө конфигурацияны текшерип, ар бир чөйрөгө акылга сыярлык демейки маанилерди бере аласыз.
1. Маселе: коддогу сырлар
Сиз маалымат базасына түз эле баштапкы файлдын ичинде минтип туташасыз деп элестетиңиз:
// db.js -- минтип кылба
const mysql = require('mysql2/promise');
const pool = mysql.createPool({
host: 'db.myapp.com',
user: 'admin',
password: 'S3cr3t-Pa55!', // Git ке түшкөн чыныгы сырсөз
});
Сиздин машинаңызда бул иштейт, бирок бул жерде үч олуттуу маселе бар:
- Сырлар агып чыгат. Сиз
git commitкылган замат бул сырсөз репозиторийдин тарыхында түбөлүккө калат - кийин сапты өчүрсөңүз да. Репозиторийге (же GitHub тагы ачык көчүрмөгө) жетүү мүмкүнчүлүгү бар ар бир адам аны окуй алат. - Көчүрүлбөйт. Сиздин ноутбугуңузга, кесиптешиңиздин ноутбугуна жана продакшн серверге ар башка маанилер керек. Катуу жазылган саптар хостту гана өзгөртүү үчүн кодду түзөтүүгө мажбурлайт.
- Алмаштыруу кыйын. Ачкыч бузулганда, аны файлдардан издеп, кайра жайылтпастан, секундалардын ичинде алмаштыргыңыз келет.
Салыштыруу. Баштапкы кодду ашкана китебине жарыялаган рецепт, ал эми сырларды үйүңүздүн ачкычы деп ойлоңуз. Рецепт менен кубаныч менен бөлүшөсүз, бирок үйдүн ачкычын анын ичине басып чыгарбайсыз. Конфигурация - бул сиздин ашканада тамак жасап жаткан адамга бере турган чапталган конверт: ал рецептке эмес, чөйрөгө таандык.