Қолданбаңыздағы API кілттерін қалай қауіпсіз сақтауға болады
API кілттерін қауіпсіз ұстау үшін оларды хостыңызда құпиялар немесе орта айнымалылары ретінде сақтаңыз, тек сервер жағындағы кодта пайдаланыңыз және оларды ешқашан чатқа, код файлдарына, скриншоттарға немесе Git репозиторийіне қоймаңыз. Әр кілтке қажетті ең аз рұқсат беріңіз, провайдерде шығын шектерін орнатыңыз, ал кілт ағып кетсе, оны жасырудың орнына ауыстырыңыз — жаңасын жасап, ескісін жойыңыз.
API кілті — қызметке арналған құпиясөз. OpenAI кілтіңіз біреуге AI-ға ақшаңызды жұмсауға мүмкіндік береді; Stripe құпия кілтіңіз қайтарым жасауға; электрондық пошта провайдерінің кілті сізбен бірге хат жіберуге. AI құрастырушылары мұларды жалғау жағынан шебер, бірақ олардың қайда тұрып қалатынына әрқашан мұқият бола бермейді, сондықтан бұл нұсқаулық оларды қалай қорғау және қалай тексеру керектігін қамтиды.
Ашық кілттер мен құпия кілттер
Барлық кілт құпия емес. Айырмашылықты білу дұрыс емес кілтке алаңдап, дұрысын елемеуден сақтайды.
| Түрі | Мысалдар | Браузерде бола ала ма? |
|---|---|---|
| Publishable / ашық кілттер | Stripe pk_… кілті, доменге шектелген карталар кілті, кейбір аналитика ID-лері | Иә — соған арналған |
| Құпия кілттер | Stripe sk_…, OpenAI және Anthropic кілттері, электрондық пошта провайдерінің кілттері, дерекқор құпиясөздері | Ешқашан |
| Қызмет/әкімші кілттері | Хостталған дерекқордағы қатынас ережелерін айналып өтетін кілттер | Ешқашан — ең сезімтал деп қараңыз |
Кілттің қай түрі екенін білмесеңіз, провайдердің құжаттамасын тексеріңіз. Күмән болса, құпия деп қараңыз.
1-қадам: кілттерді кодта емес, құпия ретінде сақтаңыз
Кілттер хостыңыздың орта айнымалыларында немесе құпиялар баптауларында тұруы керек. Кодыңыз оларды жұмыс уақытында атымен оқиды (мысалы process.env.OPENAI_API_KEY), сондықтан мән ешқашан файлдарыңызда көрінбейді. Фон үшін орта айнымалылары мен құпиялар дегеніміз не мақаласын қараңыз.
Әр API кілтін кодтан орта айнымалыларына шығарыңыз. Табылған әр кілтті, ол қай файлда болғанын және қолданған айнымалы атын тізіп шығыңыз. Мәндерін көрсетпеңіз.
Содан кейін ештеңе қалмағанын тексеріңіз:
Бүкіл жобаны, соның ішінде конфигурация файлдары мен .env файлдарын, API кілтіне немесе құпиясөзге ұқсайтын нәрселерге іздеңіз. Файлды және жолды хабарлаңыз, мәнін емес.
2-қадам: құпия кілттерді тек серверде пайдаланыңыз
Бұл ең маңызды ереже. Браузер алған кез келген нәрсені келуші оқи алады — бет дерегі мен JavaScript файлдары әзірлеуші құралдарында көрінеді.
Сондықтан қолданбаға OpenAI-ды шақыру керек болса, браузер сіздің серверіңізді шақыруы керек, ал сервер OpenAI-ды кілтпен шақырады. Кілт серверден ешқашан шықпайды.
Чат функциясы OpenAI-ды браузерден тікелей шақырады. Бұл шақыруды ортадан OPENAI_API_KEY оқитын сервер API маршрутына көшіріңіз. Браузер тек біздің маршрутымызды шақыруы керек. Маршрутқа кіруді талап етіңіз.
Фронтенд фреймворктарында жиі кездесетін бір тұзақты ескеріңіз: ашық префиксі бар айнымалылар — Vite-та VITE_, Next.js-те NEXT_PUBLIC_ — әдейі браузер кодына салынады. Құпия кілт осындай префиксі бар болса, ол «орта айнымалысында» тұрса да ашылып қалады.
3-қадам: ештеңе ағып кетпейтінін тексеріңіз
Жұмыс істегеніне сенбеңіз — тірі сайтты тексеріңіз:
- Жарияланған қолданбаны браузерде ашыңыз.
- Әзірлеуші құралдарын, содан соң Sources немесе Network қойындысын ашыңыз.
- Барлық файлдардан әр құпия кілттің алғашқы таңбаларын іздеңіз (мысалы
sk_немесеsk-). - Қолданба жасайтын желі сұрауларын тексеріңіз. Браузерден ақылы AI провайдеріне тікелей кететін сұрау — қауіп белгісі.
Егер құпия кілт табылса, оны серверге көшіріңіз (2-қадам) және ауыстырыңыз (6-қадам), себебі ол бұрыннан ашық болған.
4-қадам: әр кілттің не істей алатынын шектеңіз
Көптеген провайдерлер кілтті шектеуге мүмкіндік береді:
- Шектелген кілттер, тек қолданбаңыздың қажетін ғана орындай алатын. Мысалы, Stripe нақты рұқсаттары бар шектелген кілттерді қолдайды.
- Домен немесе IP шектеулері ашық болуы керек кілттер үшін, мысалы карталар кілттері.
- Қолданба мен орта бойынша бөлек кілттер, сонда бір ағып кету барлығын ашпайды, ал бірін күшін жою басқаларын бұзбайды.
- Құрастыру кезінде сынақ кілттері, ал тірі кілттер тек жарияланған қолданбада.
5-қадам: зиянға шек қойыңыз
Жақсы қорғалған кілтті де өз қолданбаңыз арқылы теріс пайдалануға болады — мысалы біреу AI мүмкіндігіңізге мыңдаған рет скрипт жазса.
- Әр ақылы провайдерде шығын шектерін немесе ескертулерді орнатыңыз.
- Әр шақыру ақы алатын кез келген мүмкіндікке кіруді талап етіңіз.
- Пайдаланушы бойынша жылдамдық шегін қосыңыз. Жылдамдық шегі дегеніміз не мақаласын қараңыз.
/api/chat маршрутына пайдаланушыға сағатына 30 AI сұрауынан шек қойыңыз. Шек асқанда анық хабар қайтарыңыз. Кірмеген пайдаланушылардың сұрауларын қабылдамаңыз.
6-қадам: ағып кеткен кілттерді ауыстырыңыз
Құпия кілт тиісті емес жерде пайда болса — чат хабарламасында, commit-те, скриншотта, қолдау сұрауында, браузер кодында — оны компрометацияланған деп есептеңіз.
- Провайдерде жаңа кілт жасаңыз.
- Қолданбаңыздың баптауларында құпияны жаңартыңыз.
- Тірі қолданба жаңа кілтті пайдалануы үшін қайта орналастырыңыз немесе қайта жариялаңыз.
- Провайдерде ескі кілтті жойыңыз.
- Провайдердің пайдалану журналдарында танымайтын әрекетті тексеріңіз.
Чат хабарламасын немесе Git commit-ті жою жеткіліксіз. Git тарихы ескі нұсқаларды сақтайды, ал жария болған нәрсе бұрыннан көшірілген болуы мүмкін.
Жиі кездесетін қателер
- Кілтті промптқа қою. Ол енді чат тарихында. Оның орнына құпиялар формасын қолданыңыз.
- Құпия айнымалыда ашық префикс.
VITE_OPENAI_API_KEYкілтті әр келушіге жібереді. .envфайлын commit жасау. Алғашқы push-тан бұрын ол.gitignore-да екенін тексеріңіз.- Бір кілт барлық жерде. Сынақ пен тірі үшін және әр қолданба үшін бөлек кілттер пайдаланыңыз.
- Шығын шегі жоқ. Шегі жоқ ағып кеткен немесе теріс пайдаланылған кілт сіз байқағанша үлкен шотты жинай алады.
- Ауыстырудың орнына жасыру. Кілт ашылғаннан кейін оны тек жаңа кілт түзетеді.
- Скриншоттағы кілттер. Көмек сұрамас бұрын баптаулар беттерін кесіңіз немесе бұлыңғырлаңыз.
Тексеру тізімі
- Әр кілт құпия немесе орта айнымалысы ретінде сақталған, кодта емес.
- Git-ке
.envфайлы немесе кілт commit жасалмаған. - Құпия кілттер тек сервер жағындағы кодта пайдаланылады.
- Ешбір құпия айнымалыда
VITE_немесеNEXT_PUBLIC_сияқты ашық префикс жоқ. - Тірі сайттың JavaScript-інен әр кілттің префиксін іздедім және ештеңе таппадым.
- Провайдер рұқсат ететін жерде кілттер шектелген.
- Сынақ және тірі кілттер бөлек.
- Ақылы мүмкіндіктерге кіру талап етіледі және пайдаланушы бойынша шектер бар.
- Әр ақылы провайдерде шығын шегі немесе ескерту бар.
- Әр кілтті қалай ауыстыру керектігін білемін, ал бір рет ашылған кілттердің бәрі ауыстырылған.
Mythex-те кілттерді қауіпсіз ұстау
Mythex кілттерді кодтан және чаттан екі тәсілмен шығарып тастайды:
- Құпия сұраныс картасы. Агентке кілт қажет болғанда, чатта карта көрсетеді, онда мәнді хабарлама өрісіне емес, форма өрістеріне енгізесіз, және ол жоба құпиясы ретінде сақталады. Чаттағы құпиялар бөлімін қараңыз.
- Жоба баптаулары → Secrets, немесе чаттағы
/secrets, кілттерді өзіңіз қосу немесе өзгерту үшін. Орта айнымалылары мен құпиялар бөлімін қараңыз.
Жарияланған қолданбада құпияны өзгерткеннен кейін, тірі қолданба оны қабылдауы үшін қайта жариялаңыз. Экспортталған жобаларда құпиялар болмайды, сондықтан кодты келесі жерде іске қосқанда оларды қайта қосыңыз. Кілт чатта пайда болса, провайдерде оны ауыстырыңыз.
Іске қосар алдындағы қауіпсіздік тексерісінің қалғанын AI арқылы жасалған қолданбаларға арналған қауіпсіздік тізімі арқылы өтіңіз. AI мүмкіндіктерін қосып жатсаңыз, LLM API-ларын қалай пайдалану керек кілттер мен шығын туралы тереңірек түсіндіреді.
Сұрақтар
API кілтін фронтенд кодына салу қауіпсіз бе?
Тек провайдер сол кілтті ашық болу үшін жасаған болса ғана, мысалы Stripe-тың publishable кілті немесе доменіңізге шектелген карталар кілті. Ақша жұмсай алатын немесе жеке деректерді оқи алатын кез келген кілт серверде қалуы керек, себебі браузерге жіберілген нәрсені кез келген адам оқи алады.
API кілтін чатқа немесе ашық репозиторийге қойып алсам, не істеуім керек?
Оны ауыстырыңыз: провайдерде жаңа кілт жасаңыз, қолданбаңыздың құпияларын жаңартыңыз, қайта жариялаңыз, содан соң ескі кілтті жойыңыз. Хабарламаны немесе commit-ті жою жеткіліксіз, себебі көшірмелер бұрыннан бар болуы мүмкін.
API кілттері қайда сақталуы керек?
Хостыңыздың орта айнымалыларында немесе құпиялар баптауларында, оларды сервер жағындағы код жұмыс уақытында оқиды. Оларды бастапқы файлдарға жазбаңыз, Git-ке commit жасамаңыз және скриншоттарға қоспаңыз.
API кілтім веб-сайтымда ашылып қалғанын қалай білуге болады?
Тірі сайтыңызды ашыңыз, браузердің әзірлеуші құралдарында бет дерегін және JavaScript файлдарын көріңіз, және кілттің басынан іздеңіз. Ол табылса, ол ашық және серверге көшіріліп, ауыстырылуы керек.