JavaScript Kod Gizleme Aracı

Kod gizleme, JavaScript kaynağınızı okumanın maliyetini artırır; tam anlamıyla değil (hiçbir ön uç gizlemesi kurşun geçirmez değildir), ancak gelişigüzel incelemeyi caydıracak ve otomatik veri kazımayı yavaşlatacak kadar. Bu araç dize dizisi kodlaması, tanımlayıcı karıştırma, kontrol akışı düzleştirme ve isteğe bağlı ölü kod enjeksiyonu uygular; her seçeneği, ne kadar agresif olmak istediğinize göre seçebilirsiniz.

JavaScript nasıl gizlenir

  1. 1

    Kaynağı yapıştırın

    Geçerli her JS uygundur. Kod, bir ana sayfadaki belirli global özellik adlarına bağımlıysa bunları ayrılmış (reserved) olarak ayarlayın.

  2. 2

    Teknikleri seçin

    Dize kodlaması (hex / base64), tanımlayıcı karıştırma, kontrol akışı düzleştirme, ölü kod enjeksiyonu, kendini savunan sarmalayıcı.

  3. 3

    Hedef profili seçin

    Tarayıcı (ES5 güvenli, Node API'leri yok), Node.js (`require`, `Buffer` izinli) veya düşük (çoğunlukla yalnızca küçültme).

  4. 4

    Gizle

    Araç, dönüştürülmüş kodu boyut farkıyla birlikte verir. Agresif ayarlar çıktıyı kaynaktan 3–5 kat daha büyük yapabilir.

Teknikler ve size maliyeti

Teknik Saldırganın çabasını artırır Çalışma zamanı maliyeti Boyut maliyeti
Değişken adı değiştirme Düşük İhmal edilebilir Daha küçük (küçültmenin yan etkisi)
Dize dizisi kodlaması Orta Çok az (dize başına bir arama) +10–30%
Kontrol akışı düzleştirme Yüksek Ölçülebilir (~%2–5) +50–150%
Ölü kod enjeksiyonu Düşük (göstermelik güvenlik) Küçük +20–50%
Kendini savunan sarmalayıcı Orta Tek seferlik kontrol +5–10%
Hata ayıklama koruması Orta (DevTools’u algılar) Tek seferlik kontrol +5%
VM / sanallaştırma (premium) Çok yüksek Büyük (5–20x) +300–500%

Kod gizlemenin koruyamayacağı şeyler

  • Sırlar. Ön uç kaynağınızdaki her sabit, yeterince zaman verilince okunabilir. API anahtarları, kimlik doğrulama sırları, fiyatlandırma mantığı, bunları gizlemek için asla kod gizlemeye güvenmeyin. Sunucu tarafına taşıyın.
  • Gözlemlenebilir çıktısı olan algoritmalar. Tarayıcı çalıştırabiliyorsa, hata ayıklayıcısı olan bir saldırgan her girdi ve çıktıyı gözlemleyebilir. Kod gizleme bunu yavaşlatır; durdurmaz.
  • Büyük ölçekli otomatik veri kazıma. Kazımaya karşı koruma, kaynak gizlemeye değil davranışsal tespite (parmak izi, hız sınırları, CAPTCHA) dayanır.

Kod gizleme ne zaman değer

  • Kurcalamaya karşı koruma: gömülü SDK’larda (lisanslama, reklam SDK’ları, oyun istemcileri).
  • Maliyeti yükseltmek: rakip bir uygulamanın zahmetsizce kopyalanıp yapıştırılmasına karşı.
  • Otomatik betik sınıflandırmasını zorlaştırmak: geniş kapsamlı kazıyıcılar için.

Ne zaman ters teper

  • Zaten bir paketleyiciniz var. Üretim modundaki Webpack + Terser yerel değişkenleri zaten küçültüp karıştırır. İkinci bir gizleme geçişi eklemek pek işe yaramaz ve paket boyutunu şişirir.
  • First Paint / Core Web Vitals için optimize ediyorsunuz. Agresif gizleme paketi üç katına çıkarır; bu da FCP ve LCP’ye zarar verir.
  • Üretimde hata ayıklamanız gerekiyor. Ağır gizleme, eşleşen bir kaynak haritası olmadan Sentry yığın izlerini neredeyse kullanışsız kılar, kaynak haritasını yayınlamak ise gizlemeyi boşa çıkarır.

Sık yapılan hatalar

  • Kod gizlemeyi şifrelemeyle eşdeğer saymak. Öyle değildir, yalnızca yavaşlatan bir engeldir.
  • Kaynak haritasını gizlenmiş paketle birlikte üretime göndermek. Bu, gizlemeyi tamamen etkisiz hâle getirir.
  • CDN’den zaten yüklediğiniz üçüncü taraf kütüphaneleri gizlemek. Hiçbir kazanç olmadan boyut cezasını ödersiniz.

Sık Sorulan Sorular

Hayır. Kod gizleme bir engeldir, kilit değil. Hata ayıklayıcısı olan kararlı bir analist mantığı geri çıkarır. Gelişigüzel incelemeyi ve çoğu otomatik kazıyıcıyı caydıracak kadar maliyeti artırır, ama güvenlik değildir.

Özelliklere dinamik olarak erişiyorsanız (obj["field_name"], Object.keys(obj)) ya da ana sayfa için belirli işlev/sınıf adlarına bağımlıysanız, bunları ayrılmış listesine ekleyin. Aksi hâlde özellik adlarının değiştirilmesi dış entegrasyonları bozabilir.

Orijinal kaynağı saklayın. Gizleme aracı tek yönlü bir dönüşümdür; gizlenmiş çıktıdan orijinali birebir geri getiremezsiniz, yalnızca okunabilir bir yaklaşık elde edebilirsiniz.

Hafif gizleme ~%10–30 ekler. Kontrol akışı düzleştirme artı dize dizileri %50–150 ekler. En ağır ayarlar boyutu üç katına çıkarabilir. Göndermeden önce çıktı boyutu sayacını kontrol edin.

İlgili Araçlar

Araç diğer dillerde mevcuttur