Kiểm soát truy cập và bảo mật

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Hiểu những thông tin và tài sản nào có thể nhìn thấy bởi khách hàng là rất quan trọng để duy trì cả bảo mật và sự riêng tư của trò chơi của bạn. Các nhà phát triển thường đánh giá thấp mức độ mà kẻ khai thác có thể nhìn thấy và sao chép đến khách hàng. Kẻ khai thác có khả năng truy cập vào các địa điểm "bị hạn chế" trong vũ trụ của bạn nếu họ có thể tham gia vào một địa điểm duy nhất. Họ có thể xem bất kỳ nội dung nào được sao chép đến khách hàng của họ, bất kể nó có thể nhìn thấy hay đang được sử dụng hay không. Thêm vào đó, kẻ khai thác có thể giải mã bất kỳ kịch bản cục bộ và ModuleScripts nào đã được sao chép, ngay cả khi chúng không bao giờ được thực thi trên khách hàng.

Teleportation phía khách hàng trong các vũ trụ

Khi đã vào trong một vũ trụ, khách hàng có thể dịch chuyển đến bất kỳ địa điểm nào trong vũ trụ đó, có thể bỏ qua bất kỳ hạn chế truy cập hoặc cổng tiến trình nào đã được dự định. Điều này cũng có thể dẫn đến việc rò rỉ nội dung chưa phát hành, chẳng hạn từ một trò chơi phát triển hoặc thử nghiệm. Điều quan trọng là phải hiểu rằng:

  • Việc vô hiệu hóa "Truy cập trực tiếp" chỉ loại bỏ nút Tham gia từ các địa điểm phụ trên trang web — nó không ngăn chặn việc dịch chuyển do khách hàng khởi xướng
  • Giả định rằng kẻ khai thác sẽ phát hiện ra sự tồn tại của tất cả các địa điểm phụ trong vũ trụ của bạn
  • Một khách hàng có thể dịch chuyển đến bất kỳ địa điểm phụ nào nếu họ có thể truy cập vào một địa điểm duy nhất, chẳng hạn như địa điểm gốc, bất kể quy trình thiết kế mà bạn đã dự định

Nhiều nhà phát triển cố gắng ngăn chặn truy cập bằng cách đá những người dùng không được phép ra khỏi một địa điểm phụ. Điều này có thể hoạt động để chặn gameplay, nhưng nó không ngăn chặn nội dung sao chép đến khách hàng, vì việc sao chép bắt đầu ngay khi người chơi tham gia và trước khi logic đá phía máy chủ có thể thực thi.

Sử dụng teleport an toàn

Cách hiệu quả nhất để ngăn chặn truy cập không được phép thông qua dịch chuyển là đặt Kiểm soát Truy cập cho Các Địa điểm thành An toàn trong vũ trụ chỉ trong Bảng điều khiển Người sáng tạo. Điều này hạn chế tất cả các địa điểm không khởi đầu chỉ cho các dịch chuyển do máy chủ khởi xướng, chặn các dịch chuyển do khách hàng khởi xướng ở cấp độ nền tảng trước khi người chơi tham gia vào địa điểm phụ. Bởi vì người chơi không bao giờ tham gia, không có nội dung nào được sao chép đến họ.

Để biết các bước cấu hình và hướng dẫn di chuyển cho các trò chơi hiện có sử dụng dịch chuyển do khách hàng khởi xướng, xem Dịch chuyển giữa các địa điểm.

Phòng thủ sâu cho các địa điểm bị hạn chế

Đối với các vũ trụ không thể sử dụng dịch chuyển an toàn, hoặc như các lớp bảo vệ bổ sung bên cạnh chúng, kết hợp các biện pháp sau:

  • Giữ các địa điểm phát triển và thử nghiệm trong các vũ trụ riêng tư, tách biệt — đây là cách duy nhất đáng tin cậy để đảm bảo sự riêng tư cho nội dung chưa phát hành. Không bao giờ chuyển giao tài sản sự kiện, kịch bản, hoặc các yếu tố UI bí mật đến môi trường sản xuất trước khi chúng được dự định hoạt động.
  • Nếu có thể, sử dụng streaming để giới hạn mức độ mà thế giới được sao chép đến một người chơi mới.
  • Thêm xác minh vai trò nhóm hoặc huy hiệu phía máy chủ và xác minh trạng thái hoặc yêu cầu tiến trình của người chơi.
  • Theo mặc định, không cho phép người chơi đến. Điều này đảm bảo không có người chơi nào sẽ được phép vào ngay cả khi quá trình xác minh không rõ ràng, chẳng hạn như trong trường hợp có một ngoại lệ được ném ra từ engine.
  • Nếu thực tế, sử dụng Ban API cho những người chơi không vượt qua xác minh. Điều này ngăn chặn người chơi cố gắng tham gia liên tục trên cùng một tài khoản.

Sao chép

Sao chép mô tả cách trạng thái được chuyển giao qua mạng giữa các phiên bản của engine. Mô hình sao chép của Roblox thường được đơn giản hóa theo một vài cách chính:

  • Các phiên bản có quyền kiểm soát từ máy chủ, có nghĩa là để một phiên bản được sao chép giữa tất cả các người tham gia (máy chủ và tất cả các khách hàng kết nối) nó phải được tạo ra trên máy chủ.
  • Các thuộc tính của phiên bản cũng có quyền kiểm soát từ máy chủ, có nghĩa là hầu hết các thuộc tính phải được thay đổi trên máy chủ để các thay đổi có thể nhìn thấy trên tất cả các khách hàng.
  • Nói chung, một phiên bản hoặc sao chép đến tất cả các khách hàng kết nối hoặc không. Có một số ngoại lệ, chẳng hạn như streaming.

Các container sao chép là các phiên bản cấp cao (được cha mẹ dưới DataModel) sao chép đến khách hàng. Nếu một phiên bản bao giờ trở thành một con cháu của một container sao chép trong suốt vòng đời của nó, bạn nên mong đợi nhiều trạng thái của nó sẽ được sao chép đến tất cả các khách hàng. Bạn có thể đọc thêm về các container sao chép phổ biến trong Hướng dẫn mô hình dữ liệu. Khi không chắc chắn, bạn luôn có thể kiểm tra cách một phiên bản hoặc thuộc tính sao chép trong một môi trường thử nghiệm như Chơi Đơn. Bạn có thể đọc thêm về các chế độ thử nghiệm trong Các chế độ thử nghiệm Studio.

Các tác động bảo mật của sao chép

Bất kỳ nội dung nào sao chép đến một khách hàng có thể bị trích xuất và khai thác bởi một kẻ khai thác. Như một quy tắc chung, tránh công bố hoặc chuyển giao bất kỳ nội dung bí mật nào đến môi trường sản xuất trực tiếp trừ khi bạn đã sẵn sàng ngay lập tức để nó được nhìn thấy bởi người dùng. Ngay cả khi có logic ngăn chặn việc phát hành hoặc truy cập nội dung trong trò chơi cho đến một ngày sau (hoặc một điều kiện khác nào đó), hãy giả định rằng kẻ khai thác sẽ tìm ra cách để phát hiện và rò rỉ nội dung của bạn ngay khi nó được công bố.

Tránh sử dụng các tên quá mô tả hoặc dễ đoán cho các phiên bản nhạy cảm, bao gồm nhưng không giới hạn ở: kịch bản, remotes, và mô hình. Việc có một cấu trúc DataModel dễ đoán làm cho việc phát triển các exploit trở nên dễ dàng hơn.

Giải mã kịch bản

Bất kỳ LocalScript, Script với RunContext::Client, hoặc ModuleScript nào có thể bị giải mã bởi một kẻ khai thác ngay khi được sao chép đến khách hàng của họ, ngay cả khi các kịch bản như vậy bị vô hiệu hóa, không bao giờ được yêu cầu, hoặc không bao giờ chạy trên khách hàng. Các Kịch bản và ModuleScripts chỉ dành cho máy chủ được lưu trữ trong ServerStorage hoặc ServerScriptService không thể bị giải mã vì chúng không bao giờ sao chép đến khách hàng.

Việc viết một ModuleScript bao gồm mã chỉ dành cho máy chủ và mã chỉ dành cho khách hàng trong cùng một kịch bản là không được khuyến khích vì logic phía máy chủ sẽ bị lộ trong quá trình giải mã và có thể dễ dàng bị phân tích để tìm lỗi có thể bị khai thác.

ModuleScript gốc trong ReplicatedStorage
local module = {}
local Remote = script:WaitForChild("RemoteEvent")
-- Đây là một ví dụ về một mô hình cần tránh
-- Giữ mã máy chủ trong các phiên bản Script hoặc trong ServerStorage/ServerScriptStorage!
if game:GetService("RunService"):IsServer() then
function module:DoServerThing(password)
if password == "SecretPassword" then
print("mã nhạy cảm của máy chủ")
end
end
Remote.OnServerEvent:Connect(function(player, password)
module:DoServerThing(password)
end)
else
function module:DoServerThing(password)
Remote:FireServer(password)
end
end
return module
Kết quả giải mã
local table1 = {};
local RemoteEvent = script:WaitForChild("RemoteEvent");
if game:GetService("RunService"):IsServer() then
function table1.DoServerThing(_, p2) -- Dòng: 9
if p2 == "SecretPassword" then
print("mã nhạy cảm của máy chủ");
end
end
RemoteEvent.OnServerEvent:Connect(function(player: Player, p3) -- Dòng: 15
--[[
Upvalues:
[1] = table1
--]]
table1:DoServerThing(p3);
end);
return table1;
end
function table1.DoServerThing(_, p1) -- Dòng: 19
--[[
Upvalues:
[1] = RemoteEvent
--]]
RemoteEvent:FireServer(p1);
end
return table1;

Như đã thấy ở trên, việc giải mã tiết lộ logic phía máy chủ bao gồm mật khẩu cứng, quy tắc kinh doanh, và chi tiết thực hiện mà kẻ khai thác có thể phân tích để tìm ra các lỗ hổng.

Tác động của việc vi phạm sự riêng tư

Vi phạm sự riêng tư có thể có những hậu quả nghiêm trọng, chẳng hạn như:

  • Rò rỉ nội dung: Các mục, bản đồ, hoặc tính năng chưa phát hành có thể được phát hiện và chia sẻ công khai trước khi có thông báo chính thức
  • Bất lợi cạnh tranh: Cơ chế, thuật toán, hoặc tính năng sắp tới có thể bị đảo ngược bởi các đối thủ cạnh tranh
  • Phát triển exploit: Logic máy chủ bị lộ làm cho việc xác định các lỗ hổng và phát triển các cuộc tấn công nhắm mục tiêu trở nên nhanh chóng và dễ dàng hơn
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.