Nuvaka › Geliştirici belgeleri › Güvenlik kuralları

Güvenlik kuralları

nuvaka-ext lint ve sunucunun yükleme taraması aynı kuralları, aynı sırayla ve aynı mesajlarla uygular. Hata paketi reddeder, uyarı yalnız bildirir.

Paket

KuralSınır
BiçimZIP (.nvx), kökte nuvaka.json
Sıkıştırılmış boyut≤ 20 MB
Açılmış boyut≤ 60 MB
Dosya sayısı≤ 2000
Yol≤ 200 karakter; mutlak yol, .., :, boş parça ve noktayla başlayan parça yok (.well-known hariç)
Sembolik bağyasak
İzinli dosya türlerihtml htm js mjs css json svg png jpg jpeg gif webp avif ico woff woff2 ttf otf txt md map wasm — çalıştırılabilir dosya (exe, dll, so, dylib, sh, bat, ps1…) yok. wasm serbesttir (motor içinde çalışır).

Yasak kod kalıpları

Tüm .js, .mjs, .html ve .htm dosyalarında aranır; her kural için dosya başına ilk eşleşme satır numarasıyla raporlanır. Hepsi hatadır.

KalıpNeden
eval(metinden kod çalıştırma
new Function(metinden kod üretme
Function("…")metinden kod üretme
setTimeout("…"), setInterval("…")metin verilen zamanlayıcı gizli bir eval'dir; işlev ver
import("https://…")uzak adresten modül yükleme
importScripts(uzak betik yükleme
<script src="https://…">, src="//…"uzak betik; kodu pakete koy
document.cookieçerez erişimi
window.parent, .top, .opener (ve globalThis/self ile)üst pencereye erişim; nuvaka.* kullan
_0x1a2b biçimli adlar (30'dan fazla)okunamaz hâle getirilmiş (obfuscated) kod; küçültülmüş kod serbest

Uyarı: 200 KB'tan büyük, 5 satırdan az olan ve kaynak eşlemesi (aynı adlı .map dosyası ya da sourceMappingURL) bulunmayan küçültülmüş dosya. İncelemeyi zorlaştırır; .map dosyasını pakete ekle.

Yorumlar da taranır

Tarama metin üzerinde çalışır; yorumdaki ya da HTML metnindeki eval( veya nuvaka.mail da sayılır. Örnek kodu yorum içinde bırakma.

İzin ve kullanım uyumu

  • Kodda nuvaka.<ad>, nuvaka["<ad>"] ya da { <ad> } = nuvaka olarak geçen ve manifestte izni olmayan ad alanı → hata (ör. "nuvaka.pool kullanılıyor ama manifestte nuvaka.clipboard izni yok").
  • nuvaka.ui.notify kullanılıp notifications izni yoksa → hata.
  • Manifestte istenen ama kodda hiç geçmeyen izin → uyarı ("gereksiz izin istemek kullanıcıyı ürkütür").

Ad alanı ↔ izin eşlemesi: İzinler.

Manifest

Şema ve ek kurallar: Manifest başvurusu. Bilinmeyen alan, eksik zorunlu alan, pakette olmayan entry/icon yolu, geçersiz zamanlama, tekrar eden izin, başka bir kullanıcının öneki → hata.

Çalışma zamanı sınırları

Tarama en iyi çabadır. Asıl güvenlik sınırı çalışma zamanıdır:

  • Her çağrı, kabuğun bildiği uzantı kimliğiyle ve verilen izinlerle uygulamada ve sunucuda ayrıca denetlenir.
  • Arayüz kum havuzunda: aynı köken yok, connect-src 'none', uzak betik yok, üst pencereye erişim yok.
  • Arka plan: QuickJS, 32 MB bellek, 5 sn kesintisiz çalışma dilimi, eval/Function yok.
  • net: yalnız https, yalnız izinli tam alan adları, özel ağ adresleri reddedilir.
  • files: yalnız kullanıcının seçtiği klasörler; kökten çıkış reddedilir.
  • Kritik izinler her kullanımda sorulur; bildirim ve çağrı sayıları sınırlıdır; her sunucu çağrısının özeti kaydedilir.

İyi uygulamalar

  • Yalnız gerçekten kullandığın izinleri iste; gerekçeyi somut yaz ("GitHub'dan sürüm bilgisini okumak için").
  • Okuma izinlerini net ile birleştirmekten kaçın; gerekiyorsa gerekçede hangi veriyi nereye gönderdiğini açıkla.
  • Kullanıcı verisini (not içeriği, mail, dosya) DOM'a innerHTML ile değil textContent ile yaz.
  • Sırları (API anahtarları) koda gömme; kullanıcıdan ayar olarak al ya da depoda tut.
  • Her çağrıda permission_required, permission_denied, notify_limit ve version_conflict hatalarını karşıla.

Nuvaka Apps API v1 · son güncelleme 2026-09-27