Rehberler

Uygulamanızda API Anahtarlarını Güvende Tutma

API anahtarlarını güvende tutmak için bunları barındırma sağlayıcınızda gizli değerler ya da ortam değişkenleri olarak saklayın, yalnızca sunucu tarafı kodda kullanın ve asla sohbete, kod dosyalarına, ekran görüntülerine ya da bir Git deposuna yapıştırmayın. Her anahtara ihtiyaç duyduğu en az yetkiyi verin, sağlayıcıda harcama limitleri belirleyin ve bir anahtar sızarsa, yalnızca nerede göründüğünü gizlemek yerine onu yenileyin — yeni bir tane oluşturun ve eskisini silin.

Bir API anahtarı, bir hizmet için şifredir. OpenAI anahtarınız birinin AI'a paranızı harcamasına; Stripe gizli anahtarınız birinin iade yapmasına; e-posta sağlayıcı anahtarınız birinin sizin adınıza posta göndermesine izin verir. AI uygulama oluşturucular bunları bağlamakta iyidir, ama nereye düştüklerine her zaman dikkat etmezler; bu yüzden bu rehber, onları nasıl güvende tutacağınızı ve bunu nasıl kontrol edeceğinizi anlatır.

Herkese açık anahtarlar ve gizli anahtarlar

Her anahtar gizli değildir. Farkı bilmek, yanlış olana panik yapmanızı ve doğru olanı göz ardı etmenizi engeller.

TürÖrneklerTarayıcıda olabilir mi?
Yayınlanabilir / herkese açık anahtarlarStripe pk_… anahtarı, yalnızca alan adınızla kısıtlanmış bir harita anahtarı, bazı analitik kimlikleriEvet — bunun için tasarlanmıştır
Gizli anahtarlarStripe sk_…, OpenAI ve Anthropic anahtarları, e-posta sağlayıcı anahtarları, veritabanı parolalarıAsla
Servis/yönetici anahtarlarıBarındırılan bir veritabanındaki erişim kurallarını atlayan anahtarlarAsla — en hassas olarak ele alın

Bir anahtarın hangi türden olduğundan emin değilseniz, sağlayıcının dokümantasyonunu kontrol edin. Şüpheniz varsa gizli olarak değerlendirin.

Adım 1: Anahtarları koda değil, gizli değer olarak saklayın

Anahtarlar, barındırma sağlayıcınızın ortam değişkenleri ya da gizli değerler ayarlarına aittir. Kodunuz bunları çalışma zamanında ada göre okur (örneğin process.env.OPENAI_API_KEY), böylece değer dosyalarınızda hiç görünmez. Arka plan için bkz. ortam değişkenleri ve gizli değerler nedir.

Koddaki her API anahtarını ortam değişkenlerine taşı. Bulduğun her anahtarı, hangi dosyada olduğunu ve kullandığın değişken adını listele. Değerleri bana gösterme.

Sonra hiçbir şeyin kalmadığını kontrol edin:

Yapılandırma dosyaları ve varsa .env dosyaları dahil tüm projede, bir API anahtarı ya da parolaya benzeyen her şeyi ara. Değeri değil, dosyayı ve satırı bildir.

Adım 2: Gizli anahtarları yalnızca sunucuda kullanın

Bu, en çok önem taşıyan kuraldır. Tarayıcının aldığı her şeyi bir ziyaretçi okuyabilir — sayfa kaynağı ve JavaScript dosyaları geliştirici araçlarında görünür.

Bu yüzden uygulamanın OpenAI'ı çağırması gerekiyorsa, tarayıcı sizin sunucunuzu çağırmalı ve sunucunuz anahtarla OpenAI'ı çağırmalıdır. Anahtar asla sunucudan çıkmaz.

Sohbet özelliği OpenAI'ı doğrudan tarayıcıdan çağırıyor. Bu çağrıyı, ortamdan OPENAI_API_KEY değerini okuyan bir sunucu API rotasına taşı. Tarayıcı yalnızca bizim rotamızı çağırmalı. Rota için giriş yapmayı zorunlu kıl.

Ön yüz framework'lerinde yaygın bir tuzağa dikkat edin: herkese açık bir öneki olan değişkenler — Vite'ta VITE_, Next.js'te NEXT_PUBLIC_ — kasıtlı olarak tarayıcı koduna derlenir. Bu önekle başlayan bir gizli anahtar, "bir ortam değişkeninde" olsa bile açığa çıkar.

Adım 3: Hiçbir şeyin sızmadığını test edin

İşe yaradığına güvenmeyin — canlı siteyi kontrol edin:

  1. Yayınlanmış uygulamayı bir tarayıcıda açın.
  2. Geliştirici araçlarını, ardından Sources veya Network sekmesini açın.
  3. Her gizli anahtarın ilk karakterlerini (örneğin sk_ ya da sk-) dosyalar arasında arayın.
  4. Uygulamanın yaptığı ağ isteklerini kontrol edin. Tarayıcıdan doğrudan ücretli bir AI sağlayıcısına giden bir istek kırmızı bayraktır.

Bir gizli anahtar bulursanız, zaten herkese açık olduğu için onu sunucuya taşıyın (adım 2) ve yenileyin (adım 6).

Adım 4: Her anahtarın neler yapabileceğini kısıtlayın

Birçok sağlayıcı bir anahtarı sınırlamanıza izin verir:

  • Yalnızca uygulamanızın ihtiyaç duyduğunu yapabilen kapsamlı veya kısıtlı anahtarlar. Örneğin Stripe, belirli izinlere sahip kısıtlı anahtarları destekler.
  • Harita anahtarları gibi herkese açık olmak zorunda olan anahtarlar için alan adı veya IP kısıtlamaları.
  • Uygulama ve ortam başına ayrı anahtarlar; böylece bir sızıntı her şeyi açığa çıkarmaz ve birini iptal etmek diğerlerini bozmaz.
  • Geliştirme sırasında test anahtarları, canlı anahtarlar yalnızca yayınlanmış uygulamada.

Adım 5: Zarara bir tavan koyun

İyi korunan bir anahtar bile kendi uygulamanız üzerinden kötüye kullanılabilir — örneğin birinin AI özelliğinizi binlerce kez betikle çağırması gibi.

  • Her ücretli sağlayıcıda harcama limitleri veya uyarılar ayarlayın.
  • Çağrı başına para harcayan her özellik için giriş yapmayı zorunlu kılın.
  • Kullanıcı başına bir hız sınırı ekleyin. Bkz. hız sınırlaması nedir.

/api/chat rotasına kullanıcı başına saatte 30 AI isteği sınırı ekle. Limite ulaşıldığında açık bir mesaj döndür. Giriş yapmamış kullanıcıların isteklerini reddet.

Adım 6: Sızan anahtarları yenileyin

Bir gizli anahtar olmaması gereken bir yerde görünürse — bir sohbet mesajı, bir commit, bir ekran görüntüsü, bir destek talebi, tarayıcı kodu — ele geçirilmiş sayın.

  1. Sağlayıcıda yeni bir anahtar oluşturun.
  2. Uygulamanızın ayarlarında gizli değeri güncelleyin.
  3. Canlı uygulamanın yeni anahtarı kullanması için yeniden dağıtın veya yeniden yayınlayın.
  4. Sağlayıcıda eski anahtarı silin.
  5. Tanımadığınız etkinlik için sağlayıcının kullanım günlüklerini kontrol edin.

Sohbet mesajını ya da Git commit'ini silmek yetmez. Git geçmişi eski sürümleri saklar ve herkese açık olan her şey çoktan kopyalanmış olabilir.

Sık yapılan hatalar

  • Bir anahtarı istemin içine yapıştırmak. Artık sohbet geçmişinde. Bunun yerine bir gizli değer formu kullanın.
  • Gizli bir değişkende herkese açık bir önek. VITE_OPENAI_API_KEY, anahtarı her ziyaretçiye gönderir.
  • Bir .env dosyasını commit etmek. İlk push'tan önce .gitignore içinde olduğundan emin olun.
  • Her yerde tek bir anahtar. Test ve canlı için, her uygulama için ayrı anahtarlar kullanın.
  • Harcama limiti olmaması. Sızmış ya da kötüye kullanılan bir anahtar, sınır yoksa fark etmeden büyük bir fatura çıkarabilir.
  • Yenilemek yerine gizlemek. Bir anahtar açığa çıktıktan sonra, yalnızca yeni bir anahtar sorunu çözer.
  • Ekran görüntülerindeki anahtarlar. Yardım için paylaşmadan önce ayar sayfalarını kırpın veya bulanıklaştırın.

Kontrol listesi

  • Her anahtar koda değil, gizli değer ya da ortam değişkeni olarak saklanıyor.
  • Hiçbir .env dosyası ya da anahtar Git'e commit edilmemiş.
  • Gizli anahtarlar yalnızca sunucu tarafı kodda kullanılıyor.
  • Hiçbir gizli değişken VITE_ veya NEXT_PUBLIC_ gibi herkese açık bir önek kullanmıyor.
  • Canlı sitenin JavaScript'inde her anahtarın önekini aradım ve hiçbir şey bulamadım.
  • Sağlayıcının izin verdiği yerlerde anahtarlar kapsamlı ya da kısıtlı.
  • Test ve canlı anahtarlar ayrı.
  • Ücretli özellikler giriş gerektiriyor ve kullanıcı başına limitleri var.
  • Her ücretli sağlayıcının bir harcama tavanı ya da uyarısı var.
  • Her anahtarı nasıl yenileyeceğimi biliyorum ve açığa çıkmış olan her anahtar yenilendi.

Mythex'te anahtarları güvende tutmak

Mythex, anahtarları kodunuzun ve sohbetinizin dışında iki şekilde tutar:

  • Gizli değerler isteme kartı. Agent bir anahtara ihtiyaç duyduğunda sohbette bir kart gösterir; değeri mesaj kutusuna değil form alanlarına girersiniz ve bu bir proje gizli değeri olarak saklanır. Bkz. Sohbette gizli değerler.
  • Proje ayarları → Gizli değerler, ya da sohbette /secrets; anahtarları kendiniz eklemek veya değiştirmek için. Bkz. Ortam değişkenleri ve gizli değerler.

Yayınlanmış bir uygulamanın gizli değerini değiştirdikten sonra, canlı uygulamanın bunu alması için yeniden yayınlayın. Dışa aktarılan projeler gizli değerleri dışarıda bırakır; kodu çalıştırdığınız yerde bunları yeniden ekleyin. Bir anahtar sohbette görünürse, sağlayıcıda yenileyin.

Lansman öncesi güvenlik kontrolünün geri kalanı için AI ile oluşturulmuş uygulamalar için güvenlik kontrol listesi üzerinde çalışın. AI özellikleri ekliyorsanız, LLM API'leri nasıl kullanılır anahtarları ve maliyetleri daha ayrıntılı anlatır.

Sorular

Bir API anahtarını ön yüz koduna koymak güvenli mi?

Yalnızca sağlayıcı o anahtarın herkese açık olmasını tasarladıysa güvenlidir; örneğin Stripe'ın yayınlanabilir anahtarı ya da yalnızca kendi alan adınızla kısıtlanmış bir harita anahtarı. Para harcayabilen veya özel verileri okuyabilen her anahtar sunucuda kalmalıdır, çünkü tarayıcıya gönderilen her şeyi herkes okuyabilir.

Bir API anahtarını bir sohbete ya da herkese açık bir depoya yapıştırdıysam ne yapmalıyım?

Yenileyin: sağlayıcıda yeni bir anahtar oluşturun, uygulamanızın gizli değerlerini güncelleyin, yeniden yayınlayın, sonra eski anahtarı silin. Mesajı veya commit'i silmek yetmez, çünkü kopyaları çoktan oluşmuş olabilir.

API anahtarları nerede saklanmalı?

Barındırma sağlayıcınızın ortam değişkenleri veya gizli değerler ayarlarında; çalışma zamanında sunucu tarafı kod tarafından okunarak. Kaynak dosyalara yazılmamalı, Git'e commit edilmemeli ve ekran görüntülerine dahil edilmemelidir.

API anahtarımın web sitemde açığa çıktığını nasıl anlarım?

Canlı sitenizi açın, tarayıcının geliştirici araçlarında sayfa kaynağını ve JavaScript dosyalarını görüntüleyin ve anahtarın başlangıcını arayın. Görünüyorsa açığa çıkmıştır; sunucuya taşınmalı ve yenilenmelidir.

Mythex · Pricing · Yapay zekayla her şeyi yapın · Web sitesi ve uygulama şablonları · Mythex karşılaştırmaları · Yapay zekayla uygulama geliştirme sözlüğü · Yapay zekayla uygulama geliştirme için ücretsiz araçlar · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)