التحكم في الوصول والسرية

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

فهم المعلومات والأصول التي يمكن أن يراها العملاء أمر حاسم للحفاظ على كل من الأمان والسرية في لعبتك. غالبًا ما يستهين المطورون بمدى ما هو مرئي للمستغلين وما يتم نسخه إلى العملاء. يمكن للمستغلين الوصول إلى الأماكن "المقيدة" داخل كونك إذا تمكنوا من الانضمام إلى مكان واحد. يمكنهم عرض أي محتوى يتم نسخه إلى عميلهم، بغض النظر عما إذا كان مرئيًا أو قيد الاستخدام حاليًا. بالإضافة إلى ذلك، يمكن للمستغلين فك تجميع أي نصوص محلية وModuleScripts تم نسخها، حتى لو لم يتم تنفيذها أبدًا على العميل.

النقل من جانب العميل داخل الأكوان

بمجرد دخولهم إلى كون، يمكن للعملاء الانتقال إلى أي مكان داخل ذلك الكون، مما قد يتجاوز أي قيود وصول أو بوابات تقدم مقصودة. يمكن أن يؤدي ذلك أيضًا إلى تسرب غير مقصود لمحتوى غير مُطلق، على سبيل المثال من لعبة تطوير أو مرحلة. من المهم أن نفهم أن:

  • تعطيل "الوصول المباشر" يزيل فقط زر الانضمام من الأماكن الفرعية على الموقع — لا يمنع النقل الذي يبدأه العميل
  • افترض أن المستغلين سيكتشفون وجود جميع الأماكن الفرعية داخل كونك
  • يمكن للعميل الانتقال إلى أي مكان فرعي إذا كان بإمكانه الوصول إلى مكان واحد، مثل المكان الجذري، بغض النظر عن تدفق التصميم المقصود لديك

يحاول العديد من المطورين منع الوصول عن طريق طرد المستخدمين غير المصرح لهم من مكان فرعي. قد يعمل هذا على حظر اللعب، لكنه لا يمنع المحتوى من النسخ إلى العميل، حيث يبدأ النسخ بمجرد انضمام اللاعب وقبل أن يتم تنفيذ منطق الطرد من جانب الخادم.

استخدم النقل الآمن

أكثر الطرق فعالية لمنع الوصول غير المصرح به عبر النقل هي تعيين التحكم في الوصول للأماكن إلى آمن داخل الكون فقط في لوحة التحكم الخاصة بالمبدعين. هذا يقيد جميع الأماكن غير البدائية للنقل الذي يبدأه الخادم فقط، مما يمنع النقل الذي يبدأه العميل على مستوى المنصة قبل أن ينضم اللاعب إلى المكان الفرعي. نظرًا لأن اللاعب لا ينضم أبدًا، فلا يتم نسخ أي محتوى إليهم.

لخطوات التكوين وإرشادات الترحيل للألعاب الحالية التي تستخدم النقل الذي يبدأه العميل، راجع النقل بين الأماكن.

الدفاع المتعدد الطبقات للأماكن المقيدة

بالنسبة للأكوان التي لا يمكنها استخدام النقل الآمن، أو كطبقات إضافية من الحماية بجانبها، اجمع بين التدابير التالية:

  • احتفظ بأماكن التطوير والاختبار في أكوان خاصة ومنفصلة — هذه هي الطريقة الوحيدة الموثوقة لضمان السرية للمحتوى غير المُطلق. لا تشحن أبدًا أصول الأحداث السرية، أو النصوص، أو عناصر واجهة المستخدم إلى بيئة الإنتاج قبل أن تكون مخصصة لتكون نشطة.
  • إذا كان ذلك ممكنًا، استخدم البث للحد من مقدار العالم الذي يتم نسخه إلى لاعب جديد.
  • أضف تحقق من دور المجموعة أو الشارة من جانب الخادم وتحقق من حالة اللاعب أو متطلبات التقدم.
  • بشكل افتراضي، امنع اللاعبين القادمين. يضمن ذلك عدم السماح لأي لاعب بالدخول حتى لو كانت عملية التحقق غير حاسمة، مثل حالة استثناء تم طرحها من المحرك.
  • إذا كان ذلك عمليًا، استخدم Ban API للاعبين الذين يفشلون في التحقق. يمنع ذلك اللاعبين من محاولة الانضمام باستمرار على نفس الحساب.

النسخ

تصف النسخ كيفية انتقال الحالة عبر الشبكة بين مثيلات المحرك. نموذج النسخ في Roblox مبسط عمومًا بعدة طرق رئيسية:

  • المثيلات موثوقة من جانب الخادم، مما يعني أنه يجب إنشاء المثيل على الخادم حتى يتم نسخه بين جميع المشاركين (الخادم وجميع العملاء المتصلين).
  • خصائص المثيل أيضًا موثوقة من جانب الخادم، مما يعني أنه يجب تغيير معظم الخصائص على الخادم حتى تكون التغييرات مرئية لجميع العملاء.
  • بشكل عام، إما أن يتم نسخ المثيل إلى جميع العملاء المتصلين أو لا يتم ذلك. هناك بعض الاستثناءات، مثل البث.

حاويات النسخ هي مثيلات من المستوى الأعلى (تحت نموذج البيانات) التي يتم نسخها إلى العملاء. إذا أصبح المثيل يومًا ما من نسل حاوية نسخ على مدار حياته، يجب أن تتوقع أن يتم نسخ الكثير من حالته إلى جميع العملاء. يمكنك قراءة المزيد عن حاويات النسخ الشائعة في دليل نموذج البيانات. عند الشك، يمكنك دائمًا التحقق من كيفية نسخ مثيل أو خاصية في بيئة اختبار مثل اللعب الفردي. يمكنك قراءة المزيد عن أوضاع الاختبار في أوضاع اختبار الاستوديو.

الآثار الأمنية للنسخ

يمكن استخراج أي محتوى يتم نسخه إلى عميل من قبل مستغل. كقاعدة عامة، تجنب نشر أو شحن أي محتوى سري إلى بيئة الإنتاج المباشرة ما لم تكن مستعدًا على الفور لرؤيته من قبل المستخدمين. حتى لو كان هناك منطق يحدد إطلاق أو وصول المحتوى في اللعبة حتى تاريخ لاحق (أو شرط آخر)، افترض أن المستغلين سيجدون طريقة لاكتشاف وتسريب محتواك بمجرد نشره.

تجنب الأسماء الوصفية أو القابلة للتنبؤ بشكل مفرط للمثيلات الحساسة، بما في ذلك على سبيل المثال لا الحصر: النصوص، البعيدة، والنماذج. إن وجود تسلسل هرمي لنموذج البيانات يمكن التنبؤ به يجعل من الأسهل تطوير الاستغلالات.

فك تجميع النصوص

يمكن فك تجميع أي LocalScript، أو Script مع RunContext::Client، أو ModuleScript بواسطة مستغل بمجرد نسخه إلى عميلهم، حتى لو كانت هذه النصوص معطلة، أو لم تتطلب أبدًا، أو لم يتم تشغيلها أبدًا على العميل. لا يمكن فك تجميع النصوص والModuleScripts الخاصة بالخادم المخزنة في ServerStorage أو ServerScriptService لأنها لا يتم نسخها أبدًا إلى العملاء.

كتابة ModuleScript يتضمن كود خاص بالخادم وكود خاص بالعميل في نفس النص غير مستحسن حيث سيتم كشف المنطق الخاص بالخادم في فك التجميع ويمكن تحليله بسهولة أكبر للعثور على الأخطاء التي يمكن استغلالها.

ModuleScript الأصلي في ReplicatedStorage
local module = {}
local Remote = script:WaitForChild("RemoteEvent")
-- إليك مثال على نموذج يجب تجنبه
-- احتفظ بكود الخادم في مثيلات النصوص أو في ServerStorage/ServerScriptStorage!
if game:GetService("RunService"):IsServer() then
function module:DoServerThing(password)
if password == "SecretPassword" then
print("كود خادم حساس")
end
end
Remote.OnServerEvent:Connect(function(player, password)
module:DoServerThing(password)
end)
else
function module:DoServerThing(password)
Remote:FireServer(password)
end
end
return module
نتيجة فك التجميع
local table1 = {};
local RemoteEvent = script:WaitForChild("RemoteEvent");
if game:GetService("RunService"):IsServer() then
function table1.DoServerThing(_, p2) -- Line: 9
if p2 == "SecretPassword" then
print("كود خادم حساس");
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;

كما هو موضح أعلاه، يكشف فك التجميع عن منطق الخادم بما في ذلك كلمات المرور المشفرة، وقواعد العمل، وتفاصيل التنفيذ التي يمكن للمستغلين تحليلها للعثور على الثغرات.

تأثير خروقات السرية

يمكن أن يكون لخروقات السرية عواقب كبيرة، مثل:

  • تسريبات المحتوى: قد يتم اكتشاف العناصر، أو الخرائط، أو الميزات غير المُطلقة ومشاركتها علنًا قبل الإعلانات الرسمية
  • عيب تنافسي: قد يتم عكس هندسة الآليات، أو الخوارزميات، أو الميزات القادمة من قبل المنافسين
  • تطوير الاستغلال: يجعل منطق الخادم المكشوف من الأسرع والأسهل للمستغلين تحديد الثغرات وتطوير هجمات مستهدفة
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.