Kontrol akses dan kerahasiaan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Memahami informasi dan aset apa yang terlihat oleh klien sangat penting untuk mempertahankan keamanan dan kerahasiaan pengalaman Anda. Pengembang sering kali meremehkan seberapa banyak yang terlihat oleh penyalahguna dan direplikasi ke klien. Penyalahguna memiliki kemampuan untuk mengakses tempat "terbatas" di dalam alam semesta Anda jika mereka dapat bergabung dengan satu tempat. Mereka dapat melihat konten apa pun yang direplikasi ke klien mereka, terlepas dari apakah itu terlihat atau saat ini digunakan. Selain itu, penyalahguna dapat mendekompilasi skrip lokal dan ModuleScripts yang telah direplikasi, bahkan jika skrip tersebut tidak pernah dieksekusi di klien.

Teleportasi sisi klien dalam alam semesta

Setelah berada di dalam alam semesta, klien dapat teleportasi ke tempat mana pun di dalam alam semesta tersebut, berpotensi melewati batas akses atau gerbang perkembangan yang dimaksudkan. Ini juga dapat mengarah pada kebocoran konten yang belum dirilis, misalnya dari pengalaman pengembangan atau staging. Penting untuk dipahami bahwa:

  • Menonaktifkan "Akses Langsung" hanya menghapus tombol Bergabung dari subtempat di situs — itu tidak mencegah teleportasi yang diinisiasi oleh klien
  • Anggap penyalahguna akan menemukan keberadaan semua subtempat dalam alam semesta Anda
  • Seorang klien dapat teleportasi ke subtempat mana pun jika mereka dapat mengakses satu tempat, seperti tempat utama, terlepas dari alur desain yang Anda inginkan

Banyak pengembang mencoba mencegah akses dengan mengusir pengguna yang tidak sah dari subtempat. Ini mungkin berhasil untuk memblokir gameplay, tetapi itu tidak mencegah konten dari direplikasi ke klien, karena replikasi dimulai segera setelah pemain bergabung dan sebelum logika pengusiran sisi server dapat dieksekusi.

Gunakan teleportasi yang aman

Cara paling efektif untuk mencegah akses yang tidak sah melalui teleportasi adalah dengan menyetel Kontrol Akses untuk Tempat ke Aman dalam alam semesta saja di Dasbor Pembuat. Ini membatasi semua tempat non-awal hanya untuk teleportasi yang diinisiasi oleh server, memblokir teleportasi yang diinisiasi oleh klien di tingkat platform sebelum pemain pernah bergabung dengan subtempat tersebut. Karena pemain tidak pernah bergabung, tidak ada konten yang direplikasi kepada mereka.

Untuk langkah-langkah konfigurasi dan panduan migrasi untuk pengalaman yang ada yang menggunakan teleportasi yang diinisiasi oleh klien, lihat Teleportasi antar tempat.

Pertahanan semakin dalam untuk tempat terbatas

Untuk alam semesta yang tidak dapat menggunakan teleportasi yang aman, atau sebagai lapisan tambahan perlindungan bersamaan dengan mereka, gabungkan langkah-langkah berikut:

  • Pertahankan tempat pengembangan dan pengujian dalam alam semesta pribadi terpisah — ini adalah satu-satunya cara yang dapat diandalkan untuk memastikan kerahasiaan konten yang belum dirilis. Jangan pernah mengirim aset acara yang bersifat rahasia, skrip, atau elemen UI ke lingkungan produksi sebelum mereka dimaksudkan untuk aktif.
  • Jika memungkinkan, gunakan streaming untuk membatasi seberapa banyak dunia direplikasi ke pemain baru.
  • Tambahkan verifikasi peran grup sisi server atau badge dan verifikasi status atau persyaratan kemajuan pemain.
  • Secara default, larang pemain yang masuk. Ini memastikan tidak ada pemain yang akan diizinkan masuk bahkan jika proses verifikasi tidak meyakinkan, seperti dalam kasus pengecualian yang dilempar dari mesin.
  • Jika praktis, gunakan Ban API untuk pemain yang gagal validasi. Ini mencegah pemain mencoba bergabung terus-menerus dengan akun yang sama.

Replikasi

Replikasi menggambarkan bagaimana status ditransfer melalui jaringan antara instance dari mesin. Model replikasi Roblox umumnya disederhanakan dalam beberapa cara kunci:

  • Instance bersifat otoritatif server, yang berarti bahwa untuk instance direplikasi antara semua peserta (server dan semua klien yang terhubung) ia harus dibuat di server.
  • Properti instance juga bersifat otoritatif server, yang berarti sebagian besar properti harus diubah di server agar perubahan terlihat pada semua klien.
  • Secara umum, sebuah instance baik akan direplikasi ke semua klien yang terhubung atau tidak. Ada beberapa pengecualian, seperti streaming.

Kontainer replikasi adalah instance tingkat atas (tersisip di bawah DataModel) yang direplikasi ke klien. Jika sebuah instance pernah menjadi keturunan dari kontainer replikasi selama masa hidupnya, Anda harus mengharapkan banyak dari statusnya direplikasi ke semua klien. Anda dapat membaca lebih lanjut tentang kontainer replikasi umum di Panduan model data. Ketika ragu, Anda selalu dapat memeriksa bagaimana sebuah instance atau properti direplikasi di lingkungan uji seperti Play Solo. Anda dapat membaca lebih lanjut tentang mode pengujian di Mode pengujian Studio.

Implikasi keamanan dari replikasi

Konten apa pun yang direplikasi ke klien dapat diekstrak dan ditambang data oleh seorang penyalahguna. Sebagai aturan umum, hindari mempublikasikan atau mengirimkan konten rahasia ke lingkungan produksi langsung kecuali Anda sudah siap untuk itu dilihat oleh pengguna. Bahkan jika ada logika yang menghalangi rilis atau akses konten dalam pengalaman hingga tanggal yang lebih terlambat (atau kondisi lain), anggap penyalahguna akan menemukan cara untuk mengungkap dan membocorkan konten Anda segera setelah itu diterbitkan.

Hindari nama yang terlalu deskriptif atau dapat diprediksi untuk instance yang sensitif, termasuk tetapi tidak terbatas pada: skrip, jarak jauh, dan model. Memiliki hierarki DataModel yang dapat diprediksi membuat lebih mudah untuk mengembangkan eksploitasi.

Dekompilasi skrip

Setiap LocalScript, Script dengan RunContext::Client, atau ModuleScript dapat didekompilasi oleh seorang penyalahguna setelah direplikasi ke klien mereka, bahkan jika skrip tersebut dinonaktifkan, tidak pernah dibutuhkan, atau tidak pernah dijalankan di klien. Skrip dan ModuleScripts yang hanya untuk server yang disimpan dalam ServerStorage atau ServerScriptService tidak dapat didekompilasi karena mereka tidak pernah direplikasi ke klien.

Menulis ModuleScript yang mencakup kode hanya server dan kode hanya klien dalam skrip yang sama adalah tidak disarankan karena logika sisi server akan terbuka dalam dekompilasi dan dapat lebih mudah dianalisis untuk menemukan bug yang bisa dieksploitasi.

ModuleScript Asli di ReplicatedStorage

local module = {}
local Remote = script:WaitForChild("RemoteEvent")
-- Berikut adalah contoh paradigma yang harus dihindari
-- Simpan kode server dalam instance Skrip atau di ServerStorage/ServerScriptStorage!
if game:GetService("RunService"):IsServer() then
function module:DoServerThing(password)
if password == "SecretPassword" then
print("kode server sensitif")
end
end
Remote.OnServerEvent:Connect(function(player, password)
module:DoServerThing(password)
end)
else
function module:DoServerThing(password)
Remote:FireServer(password)
end
end
return module
Hasil dekompilasi

local table1 = {};
local RemoteEvent = script:WaitForChild("RemoteEvent");
if game:GetService("RunService"):IsServer() then
function table1.DoServerThing(_, p2) -- Line: 9
if p2 == "SecretPassword" then
print("kode server sensitif");
end
end
RemoteEvent.OnServerEvent:Connect(function(player: Player, p3) -- Line: 15
--[[
Upvalues:
[1] = table1
--]]
table1:DoServerThing(p3);
end);
return table1;
end
function table1.DoServerThing(_, p1) -- Line: 19
--[[
Upvalues:
[1] = RemoteEvent
--]]
RemoteEvent:FireServer(p1);
end
return table1;

Seperti yang ditunjukkan di atas, dekompilasi mengungkapkan logika sisi server termasuk kata sandi yang dikodekan keras, aturan bisnis, dan rincian implementasi yang dapat dianalisis oleh penyalahguna untuk menemukan kerentanan.

Dampak pelanggaran kerahasiaan

Pelanggaran kerahasiaan dapat memiliki konsekuensi yang signifikan, seperti:

  • Bocoran konten: Item, peta, atau fitur yang belum dirilis dapat ditemukan dan dibagikan secara publik sebelum pengumuman resmi
  • Kerugian kompetitif: Mekanik, algoritma, atau fitur yang akan datang dapat direkayasa balik oleh pesaing
  • Pengembangan eksploit: Logika server yang terekspos membuat lebih cepat dan lebih mudah bagi penyalahguna untuk mengidentifikasi kerentanan dan mengembangkan serangan yang ditargetkan
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.