Güvenlik ve hile önleme taktikleri

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

Belirli taktiklere dalmadan önce, güvenli bir şekilde geliştirme yapmanın ve hileleri önlemenin temel ilkelerini anlamak önemlidir. Güvenli bir oyun, düşmanca eylemleri öngören bir zihniyet üzerine inşa edilmiştir. Tek bir kod satırı yazmadan önce, bu temel ilkeleri içselleştirmeniz gerekir. Bu ilkeler, aldığınız her mimari ve tasarım kararını bilgilendirmelidir.

Asla istemciye güvenmeyin

Bu, temel ilkedir. Kararlı bir sömürücü, yerel durumu ve ağ trafiğini tamamen kontrol eder. Sömürücüler bu düzeyde bir kontrole sahip olduğundan, istemci tarafında uygulanan herhangi bir güvenlik önlemi sonunda aşılacaktır. Bu, Roblox'un bir sınırlaması değildir: bu, istemci-sunucu mimarilerinin temel bir gerçeğidir. İstemciden gönderilen her veri parçasının manipüle edildiğini, uydurulduğunu veya kötü niyetle gönderildiğini varsayın. Bu, aşağıdakileri içerir:

  • İstemcide hiç çalışmasa bile, herhangi bir kopyalanmış LocalScript veya herhangi bir ModuleScript'i decompile etmek
  • Karakterinin ve herhangi bir sabitlenmemiş parçanın ağ mülkiyetini almak
  • Herhangi bir mesafede veya sıklıkta Touched olayları veya ProximityPrompt etkinleştirmeleri gibi istemci başlatılan olayları tetiklemek
  • Oyuncunun konumunu, fiziğini veya dünya ile etkileşimlerini değiştirmek
  • RemoteEvents ve RemoteFunctions'ı herhangi bir sıklıkta ve keyfi argümanlarla (ilk Player argümanı hariç) ateşlemek veya çağırmak
  • Beklenen olayları tetiklemeksizin yerel DataModel'inde herhangi bir şeyi değiştirmek
  • Yerel olarak çalışan herhangi bir kodun davranışını keyfi olarak değiştirmek

Bu nedenle, tüm kritik mantık sunucu tarafında doğrulanmalı veya yalnızca sunucuda çalıştırılmalıdır. Bu kontrolün sonuçları Ağ Mülkü, Hareket Doğrulama ve Fizik Sömürüleri ve Erişim Kontrolü ve Gizlilik belgelerinde ayrıntılı olarak açıklanmıştır.

Sunucu yetkisi

Sunucu, tüm simülasyon durumları, kurallar, oyuncu ilerlemesi ve kritik kararlar için nihai gerçeklik kaynağı olmalıdır. İstemcinin rolü, dünyayı render etmek ve kullanıcı girişini sunucuya göndermektir.

Sunucunun rolü:

  • İstemciden giriş almak
  • İstenen eylemin mümkün ve izin verilen olduğunu doğrulamak
  • Eylemi gerçekleştirmek ve yetkili durumunu güncellemek
  • Sonuçları ilgili tüm istemcilere çoğaltmak

Örneğin, bir oyuncu "Bir Bloxy Cola satın almak istiyorum" derse, sunucu, işlemi doğrulamadan ve onaylamadan önce, öğenin gerçek fiyatını, oyuncunun parasını ve oyuncu karakterinin dükkana olan fiziksel mesafesini bilmelidir. Mümkün olduğunca, doğrulanacak durum yalnızca sunucu tarafından korunmalı ve istemciler tarafından değil. Örneğin, Bloxy Cola işlemi onaylandığında, sunucu, oyuncunun parasından Bloxy Cola'nın fiyatını çıkarmalıdır, ancak sunucu her zaman oyuncu karakterini kontrol edemeyebilir.

Tasarımda güvenlik

Güvenlik dikkate alımlarını oyununuzun tasarımına en başından entegre edin, daha sonra sonradan eklemeye çalışmak yerine.

  • Her yeni özelliği tehdit modeli oluşturun. Her yeni özellik için sorun:
    • Bir saldırgan, istemcisinin tam kontrolüne sahip olduğunda bunu nasıl sömürebilir?
    • Bir istemci, özelliğin kullandığı herhangi bir parametre için herhangi bir değeri gönderebilse, en kötü sonuç ne olur?
    • Bu özellik saniyede 1,000+ kez kullanılırsa ne olur? Ne kadar maksimum hızda kullanılmalıdır?
    • Bir sömürücü bunu başka bir oyuncunun deneyimini mahvetmek için kullanabilir mi?
    • En kötü durumda, bu özellik ne kadar kaynak kullanabilir?
    • Bu özellik için açığa çıkarmam gereken minimum iç bilgi veya durum nedir?
  • Sorumlulukları erken bölün. Mantık ve verileri ServerScriptService'de ilk günden itibaren tutun. Asla bunları ReplicatedStorage veya Workspace gibi kopyalanan konteynerlere yerleştirmeyin.
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.