0Pricing
TypeScript Academy · Ders

Gizli Bilgiler ve Tür Güvenliği

Hassas değerleri türlere sızdırmadan ele alın.

Gizli Bilgiler ve Tür Güvenliği, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Gizli Değerler Özel Özen Gerektirir

API anahtarları, parolalar ve belirteçler de yapılandırmadır; ancak bunların kayıtlarda veya hata iletilerinde sızdırılması tehlikelidir. Tür güvenliği, gizli değerlerin yanlışlıkla açığa çıkmasını önlemeye yardımcı olabilir.

Yanlışlıkla Kayıt Tutma Sorunu

Düz bir gizli dize, örneğin console.log(config) yoluyla veya yapılandırma nesnesinin tamamını serileştiren bir hata dökümüyle, herhangi bir yerde yanlışlıkla kaydedilebilir.

const config = { dbPassword: "hunter2" };
console.log(config); // leaks the password

Etiketlenmiş Gizli Türler

Etiketlenmiş tür, bir dizeyi derleme zamanında gizli değer olarak işaretler. Böylece tür sistemi bir Secret ile sıradan bir dizeyi birbirinden ayırır ve bilinçli işlem yapılmasını zorunlu kılar.

type Secret = string & { readonly __brand: "Secret" };
function secret(s: string): Secret { return s as Secret; }

Etiketleme Neden Yardımcı Olur

Bir Secret, açıkça amaçlanmadıkça düz bir string türüne atanamadığından, işlevler uygun yerlerde bir Secret talep edebilir ve onu yanlışlıkla güvenli olmayan bir yere geçiremezsiniz.

function connect(pw: Secret) { /* uses pw */ }
// connect("plain") -> type error; must wrap with secret()

Gizli Değer Sarmalayıcı Sınıfı

Başka bir seçenek, değeri toString ve serileştirme işlemi maskelenmiş bir sınıfa sarmalamaktır; böylece dikkatsizce yapılan kayıt tutma işlemlerinde bile bir yer tutucu görünür.

class Secret {
  constructor(private readonly value: string) {}
  expose(): string { return this.value; }
  toString() { return "[REDACTED]"; }
}

Serileştirmede Maskeleme

toJSON davranışını özelleştirmek, bir nesne JSON.stringify ile serileştirildiğinde gizli değerin hiçbir zaman görünmemesini sağlar; bu, en yaygın yanlışlıkla sızma yoludur.

class Secret {
  constructor(private readonly value: string) {}
  expose() { return this.value; }
  toJSON() { return "[REDACTED]"; }
}
// JSON.stringify({ pw: new Secret("x") }) -> {"pw":"[REDACTED]"}

Yalnızca Açıkça Erişime Açma

Gerçek değere yalnızca expose() gibi açık bir yöntem üzerinden erişilebilir. Bu, gizli bir değeri okuyan her noktayı kod içinde görünür ve denetlenebilir kılar.

const pw = new Secret("hunter2");
console.log(String(pw)); // [REDACTED]
connectToDb(pw.expose()); // deliberate access

Gizli Değerleri Geniş Türlerden Uzak Tutma

Ham gizli dizeleri, tamamı kaydedilen geniş yapılandırma arayüzlerine koymaktan kaçının. Secret türünü kullanın; böylece yapılandırma yazdırıldığı her yerde varsayılan olarak maskelenirler.

interface Config {
  host: string;
  dbPassword: Secret; // not a plain string
}

Gizli Değerleri Güvenle Yükleme

Gizli ortam değerlerini okurken sarmalayın; böylece ilk andan itibaren etiketlenmiş veya kutulanmış olurlar ve hiçbir zaman düz dizeler olarak ortalıkta dolaşmazlar.

const config = {
  host: process.env.DB_HOST!,
  dbPassword: new Secret(process.env.DB_PASSWORD!),
};

Katmanlı Savunma

Tür düzeyindeki gizli değerler yanlışlıkla sızıntıları azaltır; ancak iyi operasyonel uygulamaların yerini tutmaz: ortam değişkenlerini kimlerin okuyabileceğini sınırlandırın, istek gövdelerini kaydetmekten kaçının ve hata raporlayıcılarındaki hassas verileri temizleyin.

Tekniklerin Özeti

Markalı türleri bilinçli işlemeyi zorunlu tutmak, değerleri gizleyen toString/toJSON içeren bir sarmalayıcı sınıf kullanmak ve değeri okumak için açıkça belirtilen bir expose() kullanmak, gizli bilgileri günlüklerden ve serileştirilmiş çıktılardan uzak tutar.

Hızlı Kontrol

Bu dersle ilgili hızlı bir kontrol.

Özet

Gizli bilgileri, bilinçli işlemeyi zorunlu tutan markalı türlerle veya toString/toJSON yöntemleri [REDACTED] döndüren bir sarmalayıcı sınıfla koruyun; gerçek değeri yalnızca açıkça belirtilen bir expose() aracılığıyla dışa aktarın. Böylece gizli bilgiler günlüklerde ve serileştirilmiş yapılandırmada yer almaz.

Sıkça Sorulan Sorular

“Gizli Bilgiler ve Tür Güvenliği” dersi ücretsiz mi?

Evet — “Gizli Bilgiler ve Tür Güvenliği” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Gizli Bilgiler ve Tür Güvenliği” dersinde ne öğreneceğim?

Hassas değerleri türlere sızdırmadan ele alın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Gizli Bilgiler ve Tür Güvenliği” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Ortam Değişkenlerinin Türünü Belirleme
  2. Şema Doğrulamalı Yapılandırma
  3. Yapılandırma Katmanları ve Varsayılanlar
  4. Gizli Bilgiler ve Tür Güvenliği
← TypeScript Academy Sayfasına Dön