Biến môi trường cho khóa API: mô hình bí mật đơn giản
Giải thích biến môi trường cho khóa API dành cho người không chuyên: giữ khóa ngoài prompt và repo, ánh xạ dev/staging/prod và xoay khóa an toàn.

Tại sao khóa API bị lộ và vì sao điều đó quan trọng
Một khóa API giống như mật khẩu cho một dịch vụ mà ứng dụng của bạn đang gọi (thanh toán, email, bản đồ, AI, phân tích). Nó cho dịch vụ biết, "yêu cầu này đến từ tài khoản của tôi," để dịch vụ tính phí, áp giới hạn, và cho phép truy cập.
Khóa bị lộ vì chúng thường được dùng tạm: copy-paste nhanh. Bạn dán nó vào chat, file cấu hình, hoặc ghi chú "chỉ tạm thời," rồi nó bị lưu ở chỗ bạn không muốn chia sẻ.
Các đường rò rỉ vô tình phổ biến gồm dán vào prompt chat (đặc biệt khi bạn đang xây dựng nhanh bằng một công cụ kiểu vibe-coding), commit khóa vào repo hoặc upload zip "để review", chụp màn hình hoặc quay màn hình có chứa khóa, để trong tài liệu chia sẻ hoặc chat nhóm, hoặc hardcode vào mã front-end mà bất kỳ trình duyệt nào cũng có thể đọc.
Rủi ro không phải là trừu tượng. Hệ quả nhanh nhất là hóa đơn bất ngờ: ai đó dùng khóa của bạn gọi API hàng nghìn lần. Rủi ro tiếp theo là truy cập dữ liệu: nếu khóa cho phép đọc dữ liệu khách hàng hoặc gửi email, kẻ tấn công cũng có thể làm vậy. Trong trường hợp xấu nhất, khóa có quyền rộng có thể dẫn đến chiếm quyền tài khoản (ví dụ nếu nó có thể tạo khóa mới).
Bạn không cần là chuyên gia an ninh để có được phần lớn lợi ích. Một thay đổi thói quen nhỏ đem lại nhiều lợi ích: coi khóa là "bí mật" và giữ chúng khỏi prompt và repo. Đó chính là mục đích của biến môi trường: lưu bí mật ở nơi được bảo vệ, và để ứng dụng đọc nó khi chạy, thay vì nhúng vào mã hoặc chụp màn hình.
Một mô hình tư duy đơn giản: mã, cấu hình, bí mật
Nếu nhớ một quy tắc, hãy nhớ: code là những gì ứng dụng làm, config là cách nó hành xử, và secrets là thứ không bao giờ được tiết lộ.
Code là logic bạn xây và phát hành (giao diện, nút bấm, phép tính, gọi API). Nó nên an toàn để chia sẻ với đồng đội và thường nằm trong repo.
Config là các cài đặt có thể công khai mà không gây hại. Nghĩ đến: tên ứng dụng, vùng chạy, feature flags, hoặc URL cơ sở của một dịch vụ. Nếu ai đó nhìn thấy, họ không nên tiêu tiền của bạn, truy cập dữ liệu riêng tư, hoặc giả mạo bạn.
Secrets là chìa khóa của vương quốc: khóa API, mật khẩu cơ sở dữ liệu, token riêng, khóa ký. Nếu người lạ có được, họ có thể hành động thay ứng dụng của bạn.
Biến môi trường chỉ là một ô có nhãn mà ứng dụng đọc khi chạy. Mã của bạn tìm nhãn (ví dụ STRIPE_SECRET_KEY) và dùng giá trị hiện có. Sự tách biệt này là lý do biến môi trường rất phù hợp cho khóa API: mã giữ nguyên, trong khi giá trị bí mật nằm ngoài prompt, file, và repo của bạn.
Giữ code và bí mật ở chỗ khác nhau cũng giúp sửa lỗi dễ hơn. Nếu bạn vô tình tiết lộ một bí mật, bạn có thể thay giá trị mà không đổi mã.
Một cách nghĩ thực tế về môi trường: cùng nhãn, khác giá trị.
- Dev: khóa cá nhân và dịch vụ thử nghiệm
- Staging: bản sao an toàn của production, vẫn dùng credential không phải production
- Prod: khóa thật, tiền thật, dữ liệu thật
Ví dụ: bạn có thể dùng nhãn PAYMENTS_KEY ở mọi nơi, nhưng dev dùng key test, staging dùng key hạn chế, và prod dùng key live. Nếu bạn triển khai với nền tảng như Koder.ai, điều này dễ quản lý vì bạn có thể triển khai cùng app tới các môi trường khác nhau với cài đặt môi trường khác nhau.
Cái gì được coi là bí mật (và cái gì không)
Bí mật là bất kỳ giá trị nào cho người khác quyền mà họ không nên có. Nếu người lạ có, họ có thể đăng nhập, tiêu tiền, đọc dữ liệu, hoặc giả danh ứng dụng của bạn.
Các bí mật phổ biến gồm khóa API, mật khẩu DB, token truy cập riêng, khóa ký, và webhook secrets. Nếu nó có thể tạo, xóa, tính phí, đọc dữ liệu riêng tư, hoặc ký yêu cầu, hãy coi đó là bí mật.
Một số giá trị trông vô hại nhưng vẫn nhạy cảm. Write tokens là cạm bẫy kinh điển: trông không giống "mật khẩu" nhưng cho phép kẻ tấn công đẩy thay đổi, upload file, gửi email, hoặc ghi vào DB. Tương tự với admin keys, file JSON của service account, và token dài ngẫu nhiên.
Không phải mọi thứ đều cần xử lý như bí mật. Những thứ này thường không phải bí mật: feature flags (chỉ thay đổi giao diện hoặc hành vi, không phải quyền truy cập), URL công khai, văn bản giao diện, ID đo lường analytics, và ID nội bộ không thể dùng một mình để truy cập dữ liệu. Nếu nó sẽ hiển thị ở front end hoặc tài liệu, có lẽ không phải bí mật.
Bài kiểm tra nhanh: nếu bạn sẽ bực mình khi thấy nó xuất hiện trong chat công khai hoặc commit vào repo công khai, đó là bí mật.
Giữ một danh sách nhỏ đã viết của các bí mật ứng dụng bạn dùng. Với mỗi cái, ghi mục đích (thanh toán, email, DB, lưu trữ), nơi nó nên tồn tại (dev, staging, prod), ai sở hữu (bạn, đồng đội, vendor), và nó là chỉ đọc hay có quyền ghi. Danh sách này là bản đồ khi bạn cần xoay khóa sau này mà không đoán mò.
Bí mật thường vô tình kết thúc ở đâu
Hầu hết rò rỉ không phải do "hacker." Là những khoảnh khắc bình thường khi ai đó copy giá trị để giải quyết việc gì đó rồi quên nó vẫn hiển thị sau đó. Một quy tắc tốt: nếu có thể tìm kiếm, đồng bộ, chuyển tiếp, hoặc chia sẻ màn hình, coi nó như công khai.
Chat là một nguồn lớn. Mọi người dán toàn bộ khóa API vào prompt, chat nhóm, hoặc tin nhắn hỗ trợ vì nhanh. Nhưng chat được lưu và chia sẻ. Nếu cần trợ giúp, chỉ dán 4-6 ký tự cuối cùng và tên biến, ví dụ STRIPE_SECRET_KEY ...9f2a.
Git là cái bẫy cổ điển. Bạn thêm khóa vào file "chỉ tạm thời", commit, và sau đó xóa. Bí mật vẫn còn trong lịch sử commit. Nó cũng có thể lan qua forks, snippet bị sao chép, hoặc diff pull request.
Ảnh chụp màn hình và video quay màn hình rò rỉ nhiều hơn bạn nghĩ. Video demo có thể quay cả màn hình cài đặt, lệnh terminal, hoặc thông báo lỗi có chứa token. Dù mờ chữ, vẫn có rủi ro nếu các phần khác hiển thị.
Issue tracker và app ghi chú là nguồn yên lặng khác. Ticket, checklist, và tài liệu chia sẻ bị copy qua team và vendor. Hãy coi chúng như nhật ký công khai.
Một vài thói quen ngăn hầu hết rò rỉ:
- Không bao giờ dán toàn bộ khóa vào chat, ticket, hoặc prompt.
- Giữ bí mật ra khỏi mã, file config, và ảnh chụp màn hình.
- Làm mờ hoặc dùng placeholder trong demo.
- Nếu key bị lộ, coi như đã bị xâm phạm và xoay khóa.
- Giữ ghi chú ngắn "nơi dùng" (tên dịch vụ và env) để việc xoay khóa dễ dàng.
Nếu bạn đang xây trong Koder.ai, giữ cùng tư duy: để giá trị nhạy cảm trong cài đặt môi trường, không trong chat định nghĩa app.
Bước từng bước: đặt bí mật cục bộ bằng biến môi trường
Mục tiêu đơn giản: ứng dụng của bạn đọc bí mật từ môi trường, không từ prompt, không từ mã, và không từ file có thể vào Git.
1) Dùng file .env cục bộ (và đừng để nó vào Git)
File .env là file văn bản trên máy bạn chứa cặp khóa-giá trị. Nó làm cho thiết lập cục bộ dễ, nhưng cũng dễ rò rỉ, nên coi như ví tiền.
Tạo file .env cục bộ và chắc chắn nó bị Git bỏ qua (thường qua .gitignore). Nếu cần chia tên biến với đồng đội, chia một file ví dụ như .env.example chỉ chứa placeholder, không giá trị thật.
2) Đặt tên biến rõ ràng để không ai đoán sai
Chọn tên rõ ràng để biết đó là gì và thuộc đâu:
OPENAI_API_KEYSTRIPE_SECRET_KEYDATABASE_URLSENDGRID_API_KEYS3_ACCESS_KEY_ID
Tên tốt giảm lỗi khi bạn sau này thiết lập dev, staging, production.
3) Ứng dụng dùng env vars như thế nào (khái niệm)
Khi ứng dụng khởi động, nó hỏi hệ điều hành, "Bạn có giá trị cho OPENAI_API_KEY không?" Nếu có, ứng dụng dùng nó. Nếu thiếu, ứng dụng nên dừng sớm với lỗi rõ ràng, thay vì chạy với hành vi hỏng.
Thói quen thực tế: ghi log biết biến có mặt (có/không), nhưng không bao giờ in bí mật ra.
4) Chia sẻ bí mật an toàn trong nhóm
Đừng dán khóa vào thread chat hoặc ticket. Dùng trình quản lý mật khẩu (shared vault) hoặc kênh bảo mật khác và chỉ chia những gì người đó cần. Nếu ai đó rời nhóm, xoay khóa.
Ví dụ: một nhà sáng lập export project Koder.ai và chạy nó cục bộ. Họ giữ .env trên laptop, chỉ commit .env.example, và cho đồng đội quyền truy cập key thật qua password manager chia sẻ.
Bước từng bước: ánh xạ env vars giữa dev, staging, prod
Hãy nghĩ các môi trường như ba căn phòng riêng.
Dev là laptop của bạn hoặc sandbox cá nhân để thay đổi nhanh. Staging là bản sao an toàn của production để test đầy đủ, nhưng không ảnh hưởng khách hàng thật. Prod là nơi khách hàng dùng.
Quy tắc đơn giản: giữ tên biến giống nhau ở mọi nơi, chỉ đổi giá trị. Mã của bạn đọc STRIPE_SECRET_KEY ở mọi môi trường, nhưng mỗi môi trường cung cấp một key khác nhau.
Một bảng ánh xạ nhỏ (hoặc ghi chú) giúp:
| Tên biến (giống ở mọi nơi) | Giá trị dev | Giá trị staging | Giá trị prod |
|---|---|---|---|
PAYMENTS_API_KEY | test key | staging key | live key |
APP_BASE_URL | localhost URL | staging domain | custom domain |
DATABASE_URL | local DB | staging DB | prod DB |
Prod không nên dùng lại key dev. Key dev thường được chia giữa đồng đội và đôi khi có quyền rộng.
Để tổ chức giá trị môi trường với đội nhỏ, thống nhất vài quy tắc:
- Một người chịu trách nhiệm danh sách env var và cập nhật.
- Một tên cho mỗi cài đặt (không trùng lặp như
STRIPE_KEYvsSTRIPE_API_KEY). - Lưu giá trị ở nơi được phê duyệt, không phải chat hay tài liệu rời rạc.
- Dùng staging để thử key mới trước khi chuyển prod.
- Ghi lại ngày xoay cuối và ai đã xoay.
Nếu bạn dùng builder hosted như Koder.ai, coi mỗi target deploy (dev, staging, prod) như một môi trường riêng với giá trị bí mật riêng, dù mã giống nhau.
Cách xoay bí mật mà không làm hỏng app
Xoay bí mật nghĩa là thay khóa API theo lịch của bạn. Nếu làm đúng, xoay là việc nhàm chán: bạn đổi key, xác nhận mọi thứ chạy, rồi vô hiệu hóa key cũ.
Mô hình an toàn nhất là "hai key trong thời gian ngắn." Nhiều nhà cung cấp cho phép có hơn một key hoạt động. Khoảng chồng này giữ app chạy khi bạn thay cấu hình.
Cửa sổ xoay đơn giản:
- Tạo key mới trong dashboard nhà cung cấp (chưa xóa key cũ).
- Cập nhật biến môi trường nơi app đọc (env cục bộ, cài đặt hosting, hoặc cài đặt nền tảng).
- Triển khai hoặc khởi động lại để app load giá trị mới.
- Xác minh luồng thực tế (gửi email thử, chạy thanh toán thử, load bản đồ).
- Thu hồi key cũ khi bạn chắc chắn.
Nếu nhà cung cấp không hỗ trợ nhiều key hoạt động, chọn thời điểm ít traffic và chấp nhận một lần khởi động lại ngắn. Mục tiêu vẫn là: thay bí mật ở một chỗ mà không chạm vào mã.
Nếu nghĩ key bị lộ, hành động trước, điều tra sau. Thu hồi hoặc vô hiệu hóa ngay, rồi cấp key mới và cập nhật biến môi trường. Sau khi app ổn định, tìm nguồn rò rỉ: prompt chat, build logs, ảnh chụp màn hình, commit cũ, hoặc tài liệu chia sẻ.
Ví dụ: bạn xây CRM nhỏ trong Koder.ai dùng API email. Bạn tạo key email mới, đặt nó trong cài đặt môi trường của app, gửi email thử, rồi thu hồi key cũ.
Triển khai và CI: đưa bí mật vào production an toàn
CI/CD là pipeline tự động build và deploy app khi bạn push thay đổi, và nó thường cần cùng bí mật như app. Quy tắc chính: đừng smuggle key API vào build logs, source code, hay prompt chat. Xử lý pipeline như một máy tính khác phải nhận bí mật theo cách kiểm soát.
Bí mật thời gian build vs bí mật thời gian runtime
Cố tách bí mật cần khi build khỏi bí mật cần khi chạy.
Bí mật thời build chỉ cần trong bước build (ví dụ download package private). Bí mật runtime cần sau deploy (ví dụ gọi Stripe hoặc gửi email). Nếu có thể giữ key chỉ cho runtime, bạn giảm khả năng nó bị nhúng vào bundle, cached trong artifact, hoặc in ra log build.
Tự kiểm tra nhanh: nếu bí mật cần xuất hiện trong trình duyệt người dùng, nó không phải bí mật. "Public keys" hiển thị trong trình duyệt có thể ổn, nhưng key server phải luôn ở server.
Nơi lưu bí mật production
Dùng kho lưu trữ bí mật theo môi trường của nền tảng hosting để dev, staging, prod có giá trị khác nhau.
Nếu bạn deploy với hosting Koder.ai, đặt bí mật như biến môi trường theo từng môi trường thay vì dán key vào mã hoặc file config. Rồi app đọc chúng ở runtime (ví dụ PAYMENTS_API_KEY ở production so với key test ở staging).
Để giữ production an toàn, hạn chế ai có thể xem hoặc thay đổi bí mật prod. Giữ nhóm "view secrets" nhỏ, và tách quyền deploy khỏi quyền chỉnh sửa bí mật khi công cụ cho phép. Cũng giữ key tách theo môi trường để staging không truy cập dữ liệu prod.
Sai lầm phổ biến (và cách sửa nhanh cho mỗi lỗi)
Hầu hết rò rỉ đến từ các lối tắt hàng ngày.
Sai lầm 1: Hardcode key trong mã (hoặc commit .env)
Nếu key nằm trong file nguồn, nó có thể vào bản sao lưu, ảnh chụp màn hình, zip chia sẻ, và lịch sử git.
Sửa:
- Chuyển giá trị vào biến môi trường và đọc từ đó.
- Thêm
.envvào file ignore trước commit đầu tiên. - Nếu đã commit, xoay key và coi key cũ như đã mất.
Sai lầm 2: Dán bí mật vào prompt để "nhờ giúp"
Khi bạn dán key thật vào chat, bạn mất kiểm soát nơi văn bản được lưu hoặc chia sẻ. Nếu dùng tool vibe-coding như Koder.ai, dễ bị cám dỗ dán tất cả vào chat. Thay vào đó, thay bí mật bằng placeholder như PAYMENTS_API_KEY=REDACTED và mô tả triệu chứng.
Thói quen tốt: copy thông báo lỗi, không copy credentials.
Sai lầm 3: Dùng một key cho mọi thứ và mọi người
Một key dùng chung cho dev, staging, prod khiến một rò rỉ thành sự cố lớn hơn. Nếu nhiều người dùng chung key, bạn cũng không thể biết ai đã dùng.
Sửa: tạo key riêng cho mỗi môi trường, và nếu nhà cung cấp hỗ trợ, tạo key riêng cho mỗi người hoặc mỗi app.
Sai lầm 4: Log bí mật vô tình
Cạm bẫy phổ biến là in "tất cả config" khi khởi động. Điều đó thường bao gồm token.
Sửa: chỉ log những gì cần (ví dụ "Stripe key loaded: yes"), và che giá trị (hiện 4 ký tự cuối) khi cần nhận biết key đang dùng.
Ví dụ: nếu staging lỗi, đừng in full key. In STRIPE_KEY ending in 9K2P để xác nhận bạn đã triển đúng key mà không phơi bày nó.
Checklist nhanh trước khi ra mắt
Trước khi ship, làm một lượt bình tĩnh chỉ tập trung vào bí mật.
- Không có bí mật trong repo (bao gồm lịch sử). Tìm các pattern như
api_key,secret,token, và tên nhà cung cấp. Kiểm tra tài liệu chia sẻ, ảnh chụp màn hình, và chat dán. Nếu key từng xuất hiện trong git hoặc tài liệu, coi như bị lộ và thay. - Dev, staging, và prod dùng giá trị khác nhau. Key tách rời giới hạn thiệt hại và giúp test an toàn.
- Quyền rõ ràng: ai xem, ai sửa, ai deploy. Giữ nhóm "view secrets" nhỏ.
- Bạn có kế hoạch xoay và người chịu trách nhiệm cho từng secret. Gán người cụ thể cho mỗi bí mật.
- Bật giám sát cho việc dùng bất thường hoặc chi tiêu. Bật cảnh báo provider cho spike, failed auth storms, và ngưỡng chi tiêu.
Ví dụ nhanh: nếu app của bạn dùng API thanh toán và API email, bạn nên có hai bộ key riêng cho dev, staging, prod, và một người chịu trách nhiệm rõ ràng cho từng cái. Khi deploy (dù qua cài đặt hosting hay nền tảng như Koder.ai), map đúng env vars vào môi trường tương ứng, không copy chúng vào prompt, mã, hoặc repo.
Ví dụ tình huống và bước tiếp theo cho dự án của bạn
Maya là một nhà sáng lập không chuyên kỹ thuật xây app đơn giản: người dùng trả tiền thuê bao, và app gửi hóa đơn và email đặt lại mật khẩu. Cô ấy giữ prompt và repo sạch bằng cách coi bí mật là cài đặt ngoài mã, được inject vào runtime bằng biến môi trường.
Đây là một bộ env vars thực tế cô ấy định nghĩa (tên giữ nguyên ở mọi nơi; chỉ giá trị thay đổi):
APP_ENV=development/staging/productionAPP_BASE_URL=http://localhost:3000/https://staging.example.com/https://example.comPAYMENTS_PROVIDER_SECRET_KEY= test key (dev) / test key (staging) / live key (prod)EMAIL_PROVIDER_API_KEY= sandbox key (dev) / restricted key (staging) / full key (prod)DATABASE_URL= local DB (dev) / staging DB (staging) / production DB (prod)
Một quy tắc đơn giản: dev và staging nên dùng chế độ test và dữ liệu tách biệt. Production dùng key thật và dữ liệu thật. Như vậy, lỗi ở staging không charge thẻ thật hay gửi email tới khách thật.
Bây giờ một tình huống xoay thực tế: một contractor có quyền truy cập rời đội. Maya giả định key cũ có thể bị xâm phạm. Cô tạo key mới trong dashboard thanh toán và email, cập nhật giá trị môi trường cho mỗi môi trường. Cô xoay production trước trong cửa sổ ít hoạt động, xác minh đăng ký, thanh toán, và email vẫn hoạt động, rồi mới xoay staging và dev. Nếu có gì hỏng, cô rollback nhanh bằng cách khôi phục cấu hình trước đó.
Các bước tiếp theo giữ mọi thứ ngăn nắp:
Viết một trang "Env Var List" cho app (tên, mục đích, nơi đặt, và ai truy cập). Đặt lịch review 10 phút mỗi tháng để xóa key không dùng và xoay những gì rủi ro cao.
Nếu bạn đang xây với Koder.ai (koder.ai), nó giúp tổ chức vì bạn quản lý deployments và cài đặt môi trường ở một chỗ. Snapshot và rollback cũng hữu ích khi thay đổi cấu hình gây outage và bạn cần phục hồi nhanh.
Câu hỏi thường gặp
What’s the real damage if my API key leaks?
Một khóa API có thể tạo ra các khoản phí bất ngờ rất nhanh và đôi khi cho phép truy cập dữ liệu riêng tư hoặc thực hiện hành động như gửi email. Hãy coi nó như mật khẩu: nếu người khác có được, họ có thể đóng vai ứng dụng của bạn.
Why should I use environment variables instead of pasting keys into my code?
Đặt bí mật vào biến môi trường giúp giá trị nằm ngoài mã nguồn và ngoài những gì bạn có thể dán, commit, hoặc chụp màn hình. Ứng dụng của bạn đọc bí mật khi chạy bằng tên biến (ví dụ STRIPE_SECRET_KEY), trong khi mã nguồn vẫn an toàn để chia sẻ.
How do I tell if something is a “secret” or just normal config?
Bất cứ thứ gì cho phép người lạ tiêu tiền, truy cập dữ liệu riêng tư, hoặc giả danh ứng dụng của bạn đều là bí mật. Khóa API, mật khẩu cơ sở dữ liệu, token riêng, khóa ký, và webhook secrets là bí mật; các ID công khai và cài đặt chỉ ảnh hưởng giao diện thường không phải bí mật.
Where do secrets accidentally leak most often?
Các rò rỉ thường nhất là qua prompt chat, chat nhóm, vé hỗ trợ, ảnh chụp màn hình và commit git (bao gồm cả lịch sử commit). Thói quen tốt là giả định bất cứ thứ gì có thể tìm kiếm, đồng bộ, chuyển tiếp, hoặc chia sẻ màn hình đều có khả năng trở thành công khai.
Is it okay to use a .env file locally, and how do I avoid leaking it?
Giữ một file .env cục bộ trên máy để tiện lợi là được, nhưng đừng bao giờ commit nó. Commit một .env.example chỉ chứa chỗ giữ chỗ để đồng đội biết tên biến mà không thấy giá trị thật.
How should I set up env vars across dev, staging, and production?
Dùng cùng tên biến ở mọi môi trường và chỉ thay đổi giá trị. Ví dụ, PAYMENTS_API_KEY tồn tại ở dev, staging và prod, nhưng dev dùng key thử nghiệm còn prod dùng key thật.
Can I put an API key in my React front end if the app needs it?
Không. Khóa API dành cho server không bao giờ được để trong mã front-end vì bất kỳ ai cũng có thể đọc chúng trong trình duyệt. Nếu cần gọi dịch vụ một cách an toàn, hãy định tuyến yêu cầu qua backend và giữ bí mật trên server.
What’s the safest way to rotate an API key without breaking my app?
Tạo key mới trước, cập nhật biến môi trường, khởi động lại hoặc triển khai lại, và kiểm tra quy trình thực tế. Khi xác nhận key mới hoạt động, thu hồi key cũ để không thể dùng nữa.
What should I do right away if I think a key was exposed?
Thu hồi hoặc vô hiệu hóa key bị lộ ngay lập tức và tạo key mới, sau đó cập nhật môi trường và triển khai lại. Khi ứng dụng ổn định, tìm xem nó bị rò rỉ ở đâu (chat logs, commits, ảnh chụp màn hình) để dọn dẹp nguồn rò rỉ.
How should I handle secrets when building and deploying with Koder.ai?
Lưu bí mật trong phần cài đặt môi trường cho từng môi trường và tránh đặt chúng vào chat dự án hay mã nguồn. Nếu thay đổi cấu hình gây lỗi, dùng snapshot và rollback để trở về trạng thái trước đó mà không tái đưa các key đã lộ vào.