Lisans anahtarı neden bir sır değildir
· 3 dk okuma
Müşteriler makul bir soru soruyor: lisans anahtarı JavaScript paketinin içine giriyorsa, herkes kopyalayamaz mı?
Kopyalayabilir. Ve kulağa geldiği kadar önemli değil. Karışıklık anahtar kelimesinden geliyor; çoğu bağlamda "korumanız gereken bir sır" demek. Lisans anahtarı o değil. İmzalı bir beyan — paroladan çok tren biletine benziyor.
İçinde gerçekte ne var
Bizimki, üzerinde ECDSA P-256 imzası olan base64url bir yük. Yük imzalı, şifreli değil. Tasarım gereği herkes çözüp okuyabilir:
{
"lid": "KL-XXXX-2026",
"domains": ["example.com"],
"features": ["datagrid-editing", "pivot-charts"],
"exp": 1788000000
}
İmzanın tek bir işi var: o yükü bizim verdiğimizi ve o günden beri kimsenin düzenlemediğini kanıtlamak. Tek bir karakter değiştirin — bir özellik ekleyin, son kullanma tarihini ileri atın — doğrulama başarısız olur, çünkü sahtecinin özel anahtarımız yok.
Doğrulama çevrimdışı. Genel anahtar pakete derlenmiş durumda; grid imzayı yerel olarak kontrol ediyor ve asla eve telefon açmıyor. Lisans sunucusu yok, bize çalışma anı bağımlılığı yok, telemetri yok. Sitemiz çökse uygulamanız çalışmaya devam eder; internete kapalı bir ağda da çalışır.
Bu özellik müşteri için, herhangi bir kopya koruma önleminden daha değerlidir.
Anahtar neyi yapabilir, neyi yapamaz
Yapabilir: yükün gerçek olduğunu kanıtlamak, lisansı belirli alan adlarına bağlamak, belirli özellikleri açmak ve süresi dolmak.
Yapamaz: kararlı birinin kütüphanenizi ödemeden kullanmasını engellemek. Tarayıcıya gönderilen hiçbir şey bunu yapamaz. Kod onların makinesinde, doğrulama onların makinesinde çalışıyor; yeterince istekli bir geliştirici kontrolü silip atar. Bu bizim tasarımımızın kusuru değil, istemci tarafı yazılımın doğası. Bu kategorideki her kütüphane aynı konumda — pazarlama metinleri ne ima ederse etsin.
Dürüst çerçeve şu: lisanslama bir faturalama mekanizmasıdır, güvenlik sınırı
değil. Uymak isteyen şirketler temiz, doğrulanabilir ve eve telefon açmayan
bir yolla uysun diye vardır. Yazılım çalmak isteyen şirketleri zaten bir if
bloğu durduramayacaktı.
Bunu kabul ettiğinizde birkaç tasarım kararı kolaylaşır.
Tasarıma yansıması
İşe yarayan denetim alan adı kilidi. example.com'a bağlı bir anahtar, onu
kendi sitesine kopyalayan biri için değersizdir. Bu, gizlilikten çok daha güçlü
bir pratik korumadır ve zarifçe bozulur: en kötü ihtimalle yanlış alan adı,
uygulamayı kırmak yerine filigran gösterir.
Hata yumuşak olmalı. Anahtar eksik, süresi dolmuş veya yanlışsa grid yine de çizilir ve çalışır — sadece filigran koyar. Faturalama durumu yüzünden bir UI bileşenini sert şekilde patlatmak, yenileme e-postası spam klasörüne düştü diye müşterinin canlı panosunun boş kalması demektir. Hiçbir lisans kontrolü buna değmez.
Yerel geliştirmede anahtar gerekmemeli. Bizimki geliştirme ortamlarında alan
adı kontrolünü tamamen atlıyor. localhost'ta anahtar şart koşmak esas olarak
ürünü değerlendiren geliştiriciyi cezalandırır — ilk saatini sürtünmesiz
geçirmesini istediğiniz kişiyi.
Peki kendi sitemiz neden anahtar taşıyor?
Çünkü demolarımız ücretli özellikleri kullanıyor ve ziyaretçilere her playground sayfasında filigran göstermeyi tercih etmiyoruz. Bu yüzden site bir anahtar taşıyor ve o anahtar paketin içinde görünüyor. Bilinçli olarak.
Anahtarı özellikle dar tuttuk: kendi alan adlarımıza bağlı, yalnızca demoların gerçekten ihtiyaç duyduğu özellikleri taşıyor ve kısa ömürlü. Biri alıp kendi sitesine koyarsa alan adı kontrolü reddeder ve zaten göreceği filigranı görür.
Tek gerçek bedeli açıkça söylemek gerek. Geliştirme ortamları alan adı
kontrolünü atladığı için, kopyalanan anahtar birinin localhost'unda çalışır.
Bu kabul edilmiş bir takas: insanların kütüphaneyi rahatça değerlendirmesini
sağlıyor — zaten istediğimiz şey — ve yayına aldıkları anda hükümsüz kalıyor.
Bileşen kütüphanesi seçiyorsanız bu ne anlama geliyor
Her sağlayıcıya sorulmaya değer iki soru:
- Doğrulama çevrimdışı mı yapılıyor? Sunucuya giden bir lisans kontrolü, canlı uygulamanızda o sağlayıcının çalışır olmasına sonsuza kadar bağımlılık demektir.
- Lisans geçersizken ne oluyor? Cevap "bileşen hata fırlatır" ise, uygulamanızın erişilebilirliğini faturalama durumunuza bağlamışsınız demektir.
İki soru da anahtarın ne kadar iyi saklandığıyla ilgili değil. Zaten önemli olan kısım o değildi.
Bizimki Enterprise ve lisanslama sayfasında anlatılıyor. Tek anahtar iki bileşeni de açıyor.