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 menjaga keamanan dan kerahasiaan permainan Anda. Pengembang sering meremehkan seberapa banyak yang terlihat oleh penipu dan direplikasi ke klien. Penipu memiliki kemampuan untuk mengakses tempat "terbatas" 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 sedang digunakan. Selain itu, penipu dapat mendekompilasi skrip lokal dan ModuleScripts yang direplikasi, bahkan jika mereka tidak pernah dieksekusi di klien.

Teleportasi sisi klien dalam alam semesta

Setelah berada di dalam alam semesta, klien dapat teleportasi ke tempat mana pun dalam alam semesta itu, berpotensi melewati batasan akses atau gerbang kemajuan yang dimaksudkan. Ini juga dapat menyebabkan kebocoran konten yang belum dirilis, misalnya dari permainan pengembangan atau staging. Penting untuk dipahami bahwa:

  • Menonaktifkan "Akses Langsung" hanya menghapus tombol Bergabung dari subtempat di situs web — itu tidak mencegah teleportasi yang diinisiasi klien
  • Anggap penipu 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 maksudkan

Banyak pengembang mencoba mencegah akses dengan mengeluarkan 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 pengeluaran sisi server dapat dieksekusi.

Gunakan teleportasi yang aman

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

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

Pertahanan dalam kedalaman untuk tempat terbatas

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

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

Replikasi

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

  • Instance bersifat otoritatif server, yang berarti bahwa untuk sebuah instance dapat direplikasi di 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 tersebut terlihat di semua klien.
  • Secara umum, sebuah instance baik direplikasi ke semua klien yang terhubung atau tidak. Ada beberapa pengecualian, seperti streaming.

Kontainer replikasi adalah instance tingkat atas (parented 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 untuk 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 pengujian 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 penipu. Sebagai aturan umum, hindari menerbitkan atau mengirim konten rahasia ke lingkungan produksi langsung kecuali Anda segera siap untuk dilihat oleh pengguna. Bahkan jika ada logika yang membatasi rilis atau akses konten dalam permainan hingga tanggal yang lebih lambat (atau kondisi lain), anggaplah bahwa penipu akan menemukan cara untuk menemukan dan membocorkan konten Anda segera setelah diterbitkan.

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

Dekompilasi skrip

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

Menulis ModuleScript yang mencakup kode hanya untuk server dan hanya untuk klien dalam skrip yang sama tidak disarankan karena logika sisi server akan terungkap dalam dekompilasi dan dapat lebih mudah dianalisis untuk bug yang dapat 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) -- Baris: 9
if p2 == "SecretPassword" then
print("kode server sensitif");
end
end
RemoteEvent.OnServerEvent:Connect(function(player: Player, p3) -- Baris: 15
--[[
Upvalues:
[1] = table1
--]]
table1:DoServerThing(p3);
end);
return table1;
end
function table1.DoServerThing(_, p1) -- Baris: 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, aturan bisnis, dan detail implementasi yang dapat dianalisis oleh penipu untuk menemukan kerentanan.

Dampak pelanggaran kerahasiaan

Pelanggaran kerahasiaan dapat memiliki konsekuensi yang signifikan, seperti:

  • Kebocoran konten: Item, peta, atau fitur yang belum dirilis dapat ditemukan dan dibagikan secara publik sebelum pengumuman resmi
  • Kerugian kompetitif: Mekanika, algoritma, atau fitur mendatang dapat direkayasa ulang oleh pesaing
  • Pengembangan eksploit: Logika server yang terpapar membuatnya lebih cepat dan lebih mudah bagi penipu 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.