Erişim kontrolü ve gizlilik

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Müşterilere görünür olan bilgi ve varlıkların neler olduğunu anlamak, oyununuzun güvenliğini ve gizliliğini korumak için kritik öneme sahiptir. Geliştiriciler genellikle kötü niyetli kişilere görünür olan ve müşterilere kopyalanan şeylerin miktarını küçümsemektedir. Kötü niyetli kişiler, tek bir yere katılabildikleri takdirde evreninizdeki "kısıtlı" alanlara erişim sağlayabilirler. Görünür olup olmadığına veya şu anda kullanılıp kullanılmadığına bakılmaksızın, müşterilerine kopyalanan her türlü içeriği görebilirler. Ayrıca, kötü niyetli kişiler, müşteride hiç çalıştırılmasa bile, kopyalanan yerel betikleri ve ModuleScript'leri de decompile edebilirler.

Evrenler içinde istemci tarafı teleportasyonu

Bir evrenin içine girdikten sonra, müşteriler o evren içindeki herhangi bir yere teleport olabilirler ve bu, herhangi bir erişim kısıtlamasını veya ilerleme kapılarını atlamalarına neden olabilir. Bu, geliştirme veya sahneleme oyunlarından yayımlanmamış içeriğin istemeden sızdırılmasına da yol açabilir. Şunu anlamak önemlidir:

  • "Doğrudan Erişimi" devre dışı bırakmak, yalnızca web sitesindeki alt yerlerden Katıl butonunu kaldırır — istemci başlatmalı teleportları engellemez
  • Kötü niyetli kişilerin evreninizdeki tüm alt yerlerin varlığını keşfedeceklerini varsayın
  • Bir istemci, kök yer gibi tek bir yere erişebiliyorsa, tasarım akışınıza bakılmaksızın herhangi bir alt yere teleport olabilir

Birçok geliştirici, yetkisiz kullanıcıları bir alt yerden atarak erişimi engellemeye çalışır. Bu, oyun oynamayı engellemek için işe yarayabilir, ancak içeriklerin müşteriye kopyalanmasını engellemez, çünkü kopyalama, oyuncu katıldığında başlar ve sunucu tarafı atma mantığı çalışmadan önce gerçekleşir.

Güvenli teleportlar kullanın

Yetkisiz erişimi teleportasyon yoluyla önlemenin en etkili yolu, Yerler için Erişim Kontrolü ayarını Sadece evren içinde güvenli olarak ayarlamaktır. Bu, tüm başlangıç yerlerini yalnızca sunucu başlatmalı teleportlarla kısıtlar ve oyuncu alt yere katılmadan önce platform düzeyinde istemci başlatmalı teleportları engeller. Oyuncu katılmadığı için, onlara hiçbir içerik kopyalanmaz.

İstemci başlatmalı teleportları kullanan mevcut oyunlar için yapılandırma adımları ve geçiş rehberi için Yerler arasında teleport sayfasına bakın.

Kısıtlı yerler için derinlemesine savunma

Güvenli teleportları kullanamayan evrenler için veya bunların yanında ek koruma katmanları olarak, aşağıdaki önlemleri birleştirin:

  • Geliştirme ve test yerlerini ayrı, özel evrenlerde tutun — bu, yayımlanmamış içeriğin gizliliğini sağlamak için tek güvenilir yoldur. Gizli etkinlik varlıklarını, betiklerini veya UI öğelerini, aktif hale gelmeleri planlanmadan önce üretim ortamına göndermeyin.
  • Mümkünse, yeni bir oyuncuya ne kadar dünya kopyalanacağını sınırlamak için akış kullanın.
  • Sunucu tarafında grup rolü veya rozet doğrulaması ekleyin ve oyuncu durumu veya ilerleme gereksinimlerini doğrulayın.
  • Varsayılan olarak, gelen oyuncuları engelleyin. Bu, doğrulama süreci belirsiz olsa bile, hiçbir oyuncunun içeri girmesine izin verilmemesini sağlar; örneğin, motor tarafından bir istisna fırlatıldığında.
  • Pratikse, doğrulama sürecini geçemeyen oyuncular için Ban API kullanın. Bu, oyuncuların aynı hesapla sürekli katılmaya çalışmasını engeller.

Kopyalama

Kopyalama, durumun motorun örnekleri arasında ağ üzerinden nasıl aktarıldığını tanımlar. Roblox'un kopyalama modeli genellikle birkaç anahtar şekilde basitleştirilmiştir:

  • Örnekler sunucu yetkili olup, bir örneğin tüm katılımcılar (sunucu ve tüm bağlı müşteriler) arasında kopyalanabilmesi için sunucuda oluşturulması gerekir.
  • Örnek özellikleri de sunucu yetkili olup, çoğu özelliğin tüm müşterilerde görünür hale gelmesi için sunucuda değiştirilmesi gerekir.
  • Genel olarak, bir örnek ya tüm bağlı müşterilere kopyalanır ya da kopyalanmaz. Akış gibi bazı istisnalar vardır.

Kopyalama konteynerleri, müşterilere kopyalanan üst düzey örneklerdir (DataModel altında ebeveynlenmiştir). Bir örnek, yaşamı boyunca bir kopyalama konteynerinin alt öğesi haline gelirse, durumunun büyük bir kısmının tüm müşterilere kopyalanmasını beklemelisiniz. Yaygın kopyalama konteynerleri hakkında daha fazla bilgi için Veri modeli kılavuzu sayfasını okuyabilirsiniz. Şüphe durumunda, her zaman bir test ortamında (örneğin, Tek Başına Oynama) bir örneğin veya özelliğin nasıl kopyalandığını kontrol edebilirsiniz. Test modları hakkında daha fazla bilgi için Studio test modları sayfasını okuyabilirsiniz.

Kopyalamanın güvenlik etkileri

Bir müşteriye kopyalanan herhangi bir içerik, kötü niyetli bir kişi tarafından çıkarılabilir ve veri madenciliği yapılabilir. Genel bir kural olarak, kullanıcılar tarafından hemen görünmeye hazır olmadığınız sürece, gizli içeriği canlı üretim ortamına yayımlamaktan veya göndermekten kaçının. İçeriğin oyunda daha sonraki bir tarihe kadar (veya başka bir koşul) erişimini engelleyen bir mantık olsa bile, kötü niyetli kişilerin içeriğinizi yayımlandığı anda keşfetmek ve sızdırmak için bir yol bulacaklarını varsayın.

Hassas örnekler için aşırı açıklayıcı veya tahmin edilebilir isimlerden kaçının; bu, betikler, uzaktan erişimler ve modeller dahil ancak bunlarla sınırlı değildir. Tahmin edilebilir bir DataModel hiyerarşisine sahip olmak, kötü niyetli kişilerin istismar geliştirmesini kolaylaştırır.

Betik decompilasyonu

Herhangi bir LocalScript, Script ile RunContext::Client veya ModuleScript, kötü niyetli bir kişi tarafından, istemcilerine kopyalandıktan sonra decompile edilebilir; bu tür betikler devre dışı bırakılmış, hiç gereksinim duyulmamış veya istemcide hiç çalıştırılmamış olsa bile. Sunucuya özel Betikler ve ModuleScript'ler, ServerStorage veya ServerScriptService içinde saklandıkları için istemcilere kopyalanmadıkları için decompile edilemezler.

Aynı betikte sunucuya özel ve istemciye özel kod içeren bir ModuleScript yazmak önerilmez, çünkü sunucu tarafı mantığı decompilasyonda açığa çıkacak ve istismar edilebilecek hatalar için daha kolay bir şekilde incelenebilir.

Orijinal ModuleScript in ReplicatedStorage
local module = {}
local Remote = script:WaitForChild("RemoteEvent")
-- Kaçınılması gereken bir paradigmanın örneği
-- Sunucu kodunu Script örneklerinde veya ServerStorage/ServerScriptStorage içinde tutun!
if game:GetService("RunService"):IsServer() then
function module:DoServerThing(password)
if password == "SecretPassword" then
print("hassas sunucu kodu")
end
end
Remote.OnServerEvent:Connect(function(player, password)
module:DoServerThing(password)
end)
else
function module:DoServerThing(password)
Remote:FireServer(password)
end
end
return module
Decompile edilmiş sonuç
local table1 = {};
local RemoteEvent = script:WaitForChild("RemoteEvent");
if game:GetService("RunService"):IsServer() then
function table1.DoServerThing(_, p2) -- Satır: 9
if p2 == "SecretPassword" then
print("hassas sunucu kodu");
end
end
RemoteEvent.OnServerEvent:Connect(function(player: Player, p3) -- Satır: 15
--[[
Üst değerler:
[1] = table1
--]]
table1:DoServerThing(p3);
end);
return table1;
end
function table1.DoServerThing(_, p1) -- Satır: 19
--[[
Üst değerler:
[1] = RemoteEvent
--]]
RemoteEvent:FireServer(p1);
end
return table1;

Yukarıda gösterildiği gibi, decompilasyon, kötü niyetli kişilerin analiz edebileceği sunucu tarafı mantığını, sabit kodlanmış şifreleri, iş kurallarını ve uygulama ayrıntılarını açığa çıkarır.

Gizlilik ihlallerinin etkisi

Gizlilik ihlalleri önemli sonuçlar doğurabilir, örneğin:

  • İçerik sızıntıları: Yayınlanmamış öğeler, haritalar veya özellikler resmi duyurulardan önce keşfedilip kamuya paylaşılabilir
  • Rekabet dezavantajı: Mekanikler, algoritmalar veya yaklaşan özellikler rakipler tarafından tersine mühendislik yapılabilir
  • İstismar geliştirme: Açığa çıkan sunucu mantığı, kötü niyetli kişilerin zayıf noktaları tanımlamasını ve hedefli saldırılar geliştirmesini hızlandırır
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.