Bumalik sa blog

PagsisimulaGabay

Ligtas na pag-iimbak ng API key: env variable, .gitignore, leak fix

Panatilihing wala sa code at git ang iyong CheapTokens key: mag-set ng environment variable, idagdag ang .env sa .gitignore, at alamin ang gagawin kung mag-leak ang key.

Ni CheapTokens TeamNai-publish noong 6 min na pagbabasa

Terminal na may environment variable export at .gitignore na linya para sa API key
Sa pahinang ito
  1. Bakit hindi kabilang ang key sa iyong code
  2. Hakbang 1: ilagay ang key sa isang environment variable
  3. Hakbang 2: gumamit ng .env file nang hindi ito kinocommit
  4. Kung nag-leak ang key: ano ang gagawin, sa pagkakasunod-sunod
  5. Suriin ang sarili

Panatilihin ang key sa isang environment variable, hindi sa iyong code, at panatilihing wala sa git ang anumang .env file gamit ang isang linya sa .gitignore. Kung ang isang key ay napunta na sa isang pampublikong lugar, asikasuhin muna ang key at saka maglinis: walang naaayos ang pag-scrub ng git history habang ang key ay nasa iyong code at tools pa rin.

Iyon ang buong ideya. Ang gabay na ito ang hands-on na bersyon (ang mga batayan ay nasa What is an API key): tatlong command, isang gumaganang request, at isang maikling plano para sa masamang araw.

Bakit hindi kabilang ang key sa iyong code#

Ang API key ay isang password na gumagastos ng iyong pera. Sinumang may hawak nito ay makakapagpadala ng mga request gamit ang iyong balanse, at hindi sila matutukoy ng serbisyo kumpara sa iyo.

Ang karaniwang paraan ng pagkakamali ay boring. Ini-paste mo ang key sa isang script para gumana ang unang request, gumana ang script, nag-git push ka, at pampubliko ang repository. O ipinadala mo sa kasamahan ang iyong config file. O nag-screenshot ka ng error na kita ang key sa sulok. Pareho ang resulta sa bawat pagkakataon.

Alam na alam ito ng GitHub. Ang secret scanning nito (GitHub docs, sinuri noong 29 Oktubre 2026) ay tumitingin sa buong Git history sa lahat ng branch para sa mga hardcoded na credential, at pati na rin sa mga issue, pull request, discussion, wiki at secret gist, at naglalabas ng alert kapag may nakita. Ibig sabihin, walang binabago ang pagtanggal ng linya sa susunod mong commit: nasa lumang commit pa rin ito.

Narito ang parehong script bago at pagkatapos.

Ihambing

Parehong script, inilipat ang key palabas ng code

Key sa code

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key="<your-key>",  # pasted here: ends up in git
)

Key mula sa environment

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

Ang pangalawang bersyon ay maaaring ipadala sa GitHub, chat o code review nang ganito lang. Ang key ay nasa iyong makina, labas ng file.

Hakbang 1: ilagay ang key sa isang environment variable#

Ang environment variable ay isang pinangalanang value na ibinibigay ng iyong terminal sa bawat program na sinisimulan nito. Hinihingi ng script ang CHEAPTOKENS_API_KEY sa pangalan at hindi nito nakikita kung saan ito galing.

Sa macOS at Linux:

bash
export CHEAPTOKENS_API_KEY="<your-key>"

Sa Windows PowerShell:

powershell
setx CHEAPTOKENS_API_KEY "<your-key>"

Dalawang detalye ang madalas ikinakabit ng mga tao. Ang export ay tumatagal lamang para sa terminal window na iyon, kaya para mapanatili ito, idagdag ang linya sa iyong shell profile (~/.zshrc o ~/.bashrc). At hindi binabago ng setx ang window kung saan mo ito tinype: magbukas ng bagong terminal bago ka mag-test.

Ngayon isang buong request. Gumagamit ito ng OpenAI-compatible endpoint, https://api.cheaptokens.dev/v1, at DeepSeek-V4-Flash kasama ang buong id nito (deepseek-ai/DeepSeek-V4-Flash-0731; kunin ang mga id mula sa CheapTokens docs, dahil iba-iba ang mga pangalan sa pagitan ng mga provider):

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)
print(resp.usage)

Ang maikling pagbati ay isang request na humigit-kumulang 20 tokens in at 20 out, na sa kasalukuyang presyo ay $0.0000023 (ang buong listahan ay nasa pricing page). Kung hindi ka pa nakakapagpadala ng unang request, ang Your first API request with CheapTokens ay naglalakad dito mula sa simula.

Bumabalik ang sagot ng model sa choices[0].message.content, at ipinapakita ng usage ang mga token na binilang nito. Hindi kailanman lumalabas ang key sa file.

Terminal na nagpapakita ng .env at .gitignore na mga command
Ang tatlong command na nagpapanatili ng key palabas ng git

Hakbang 2: gumamit ng .env file nang hindi ito kinocommit#

Nakakaumay ang mag-type ng export sa bawat bagong window. Ang .env file ay nagpapanatili ng value sa isang lugar, katabi ng project:

text
CHEAPTOKENS_API_KEY=<your-key>

Binabasa ito ng Python gamit ang python-dotenv (pip install python-dotenv):

python
from dotenv import load_dotenv
load_dotenv()  # fills os.environ from .env

Ligtas lamang ang file kung hindi ito nakikita ng git. Idagdag ito sa .gitignore bago ang unang commit:

bash
echo ".env" >> .gitignore
git check-ignore -v .env

Kung tama ang lahat, ang pangalawang command ay maglalabas ng tulad ng .gitignore:1:.env .env: sinasabi ng git kung aling rule ang nag-iignore sa file. Kung wala itong ilalabas, hindi gumagana ang rule. Sa Windows, gumawa ng .gitignore sa isang editor na may linyang .env, o gumamit ng Add-Content .gitignore .env: ang >> ng PowerShell ay maaaring magsulat ng UTF-16, na maaaring iignore ng git.

Isang patibong: ang .gitignore ay nakakaapekto lamang sa mga file na hindi pa tinatrack ng git. Kung ang .env ay naicommit na dati, patakbuhin ang git rm --cached .env para tumigil ang git sa pag-track nito, at ituring na exposed ang key sa loob (higit pa tungkol dito sa ibaba). Isang malinis na ugali ay ang mag-commit ng .env.example na may pangalan ng variable at placeholder sa halip na ang value, para alam ng kasamahan kung ano ang iseset.

Kung nag-leak ang key: ano ang gagawin, sa pagkakasunod-sunod#

Marahil napunta ang key sa isang pampublikong repo, marahil nasa screenshot ito, marahil ini-paste mo ang buong config sa isang forum thread. Mas mahalaga ang pagkakasunod-sunod kaysa sa bilis ng anumang hakbang.

Ang sariling gabay ng GitHub (parehong pahina, sinuri noong 29 Oktubre 2026) ay agad na i-rotate ang credential; ang pag-rewrite ng Git history ay opsyonal at madalas hindi kailangan kapag na-revoke na ang credential. Madalas gawin ng mga tao ang kabaligtaran: gumugugol sila ng isang oras sa pag-scrub ng history habang gumagana pa ang key. Huwag.

Piliin ang iyong kaso

Ano ang nangyari sa iyong key? Piliin ang pinakamalapit na kaso

Ang key ay nasa isang commit na pampubliko na ngayon

Alisin muna ang key sa code, lumipat sa environment variable, idagdag ang .env sa .gitignore, at tingnan ang iyong balanse para sa mga request na hindi mo ipinadala. Ang paglilinis ng history ay nice-to-have pagkatapos, hindi ang urgenteng bahagi.

Ang key ay nasa isang screenshot o shared file

Parehong pagkakasunod-sunod: itigil ang paggamit ng key na iyon sa iyong mga tool at lumipat sa environment variable, pagkatapos ay i-delete ang post o file kung kaya mo. Ang na-delete na screenshot ay maaaring nakopya na, kaya huwag umasa sa pag-delete lamang.

Ang parehong key ay ginagamit sa ilang tool

Puntahan ang bawat lugar na may hawak ng key: ang iyong shell profile, .env files, editor at terminal tools, at ituro ang bawat isa sa environment variable, para may isang lugar na babaguhin. Kung nabigo ang isang tool na basahin ang variable, ipinapakita ng 401/404 troubleshooting guide kung ano ang hitsura ng error.

Tatlong hakbang pagkatapos ng leak: alisin ang key sa code, i-update ang bawat tool, magpadala ng test request
Key palabas ng code muna, tapos bawat tool, tapos test request

Pagkatapos ng cleanup, magpadala ng isang maliit na test request, tulad sa Hakbang 1, at tingnan ang iyong balanse. Kung sumasagot ito at normal ang balanse at mga request, tapos na ang cleanup; bantayan ang balanse sa susunod na mga araw. Ang key na naging pampubliko ay dapat ituring na exposed kahit na inalis mo na ito sa code, kaya bantayan ang balanse at bilang ng request para sa anumang hindi mo ipinadala, at huwag gamitin muli ang key na iyon sa mga bagong lugar. Para sa mga lugar kung saan madalas tumira ang key, tingnan ang Where to plug in your own API key.

Suriin ang sarili#

Subukan mo mismoSubukan: i-unset ang variable at patakbuhin ang script. Ano ang nakikita mo?Ipakita ang sagot

Humihinto ang Python sa KeyError: 'CHEAPTOKENS_API_KEY' bago pa man umalis ang anumang request sa iyong makina. Iyon ang magandang failure: tumatanggi ang script na tumakbo nang walang key sa halip na tahimik na gumamit ng na-paste. Kung 401 ang nakikita mo sa halip, naka-set ang variable pero mali ang key; suriin ang key at ang address laban sa 401/404 guide.