0Pricing
Lua Academy · Ders

Eklenti Çalıştırmayı Korumalı Alana Alma

setfenv/load ve özel _ENV kullanarak eklentileri kısıtlı ortamlarda çalıştırın.

Eklenti Çalıştırmayı Korumalı Alana Alma, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. 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, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

Eklentiler Neden Korumalı Alanda Çalıştırılır?

Güvenilmeyen eklenti kodu tehlikeli işlevleri (os.execute, io.open, load) çağırabilir veya uygulamanın özel durumuna erişebilir. Korumalı alan, kodun yapabileceklerini kısıtlar.

Lua 5.2+ Sürümünde Özel _ENV

Lua 5.2 ve sonraki sürümlerde her parçanın küresel ortamı _ENV'dir. Erişimini kısıtlamak için parçayı sınırlı bir _ENV ile yükleyiniz.

local function sandbox(code, env)
  local chunk, err = load(code, "sandbox", "t", env)
  if not chunk then return nil, err end
  return pcall(chunk)
end

Güvenli Ortam Oluşturma

Yalnızca güvenli standart kitaplık işlevlerini içeren bir izin verilenler listesi ortamı oluşturunuz.

local safeEnv = {
  print  = print,
  type   = type,
  pairs  = pairs,
  ipairs = ipairs,
  tostring = tostring,
  tonumber = tonumber,
  table  = {insert=table.insert, concat=table.concat, sort=table.sort},
  string = {format=string.format, find=string.find, match=string.match},
  math   = math,
}

Tehlikeli İşlevleri Engelleme

Açıkça dışarıda bırakınız: os, io, load, loadfile, dofile, require, debug. Bunları safeEnv içine kopyalamayınız.

Korumalı Alanda Dosya Yükleme

Bir eklenti dosyasını yükleyiniz ve korumalı alan ortamında çalıştırınız.

local function sandboxFile(path, env)
  local chunk, err = loadfile(path, "t", env)
  if not chunk then return nil, err end
  local ok, result = pcall(chunk)
  if not ok then return nil, result end
  return result
end

API Erişimi Sağlama

Korumalı alanda çalışan eklentilere, ortama yalnızca güvenli yöntemleri ekleyerek kısıtlı bir uygulama API'sine erişim sağlayınız.

local pluginEnv = setmetatable({
  app = {
    on       = function(e,f) app:on(e,f) end,
    emit     = function(e,...) app:emit(e,...) end,
    log      = function(msg) app:log(msg) end,
  },
}, {__index = safeEnv})

_ENV Erişimini Önleme

Korumalı alana _G, _ENV veya load eklemeyiniz. Bunlar, kısıtlı ortamdan kaçışa olanak tanır.

debug.sethook ile Talimat Sayımı

Yürütülen talimatları sayarak ve bir sınıra ulaşıldıktan sonra işlemi durdurarak sonsuz döngüleri önleyiniz.

local function withLimit(fn, maxInstructions)
  local count = 0
  debug.sethook(function()
    count = count + 1
    if count > maxInstructions then
      error("Instruction limit exceeded")
    end
  end, "", 100)
  local ok, err = pcall(fn)
  debug.sethook()
  return ok, err
end

Bellek Sınırı

Bellek kullanımı bir eşiği aşarsa işlemi durdurmak için talimat sayımını periyodik collectgarbage("count") denetimleriyle birleştiriniz.

Çıktı Yakalama

Korumalı alan ortamındaki print işlevini, çıktıyı standart çıktıya yazmak yerine bir arabellekte yakalayan özel bir işleve dönüştürünüz.

Kaçınılması Gereken Korumalı Alan Kaçışları

Bilinen kaçış yolları: debug.getupvalue, standart nesneler üzerinde getmetatable kullanımı ve tehlikeli kodun coroutine.wrap ile çalıştırılması. Tüm ortam girdilerini dikkatle inceleyiniz.

Korumalı Alan Sorusu

Korumalı alanda çalışan kodun os.execute çağırmasını nasıl önlersiniz?

Özet: Eklentileri Korumalı Alanda Çalıştırma

Yalnızca güvenli API'leri içeren bir izin verilenler listesi _ENV oluşturunuz. Eklenti kodunu load(code, name, "t", safeEnv) ile yükleyiniz. Sonsuz döngüleri önlemek için talimat sayımı kullanınız. Korumalı alana hiçbir zaman load, debug veya _G eklemeyiniz.

Sıkça Sorulan Sorular

“Eklenti Çalıştırmayı Korumalı Alana Alma” dersi ücretsiz mi?

Evet — “Eklenti Çalıştırmayı Korumalı Alana Alma” 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 Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Eklenti Çalıştırmayı Korumalı Alana Alma” dersinde ne öğreneceğim?

setfenv/load ve özel _ENV kullanarak eklentileri kısıtlı ortamlarda çalıştırın. Lua 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.

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

Önceden deneyim gerekmez. CoddyKit'te Lua 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 3. dersidir.

“Eklenti Çalıştırmayı Korumalı Alana Alma” 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 Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua 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. Eklenti Keşfi ve Yükleme
  2. Eklenti API'si ve Kanca Sistemi
  3. Eklenti Çalıştırmayı Korumalı Alana Alma
  4. Sürümleme ve Bağımlılık Yönetimi
← Lua Academy Sayfasına Dön