Kiểm soát truy cập và tính 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 rõ thông tin và tài sản nào có thể nhìn thấy đối với khách hàng là rất quan trọng để duy trì cả tính bảo mật và tính bảo mật của trải nghiệm của bạn. Các nhà phát triển thường đánh giá thấp mức độ có thể nhìn thấy đối với những kẻ khai thác và sao chép cho khách hàng. Những kẻ khai thác có khả năng truy cập vào các vị trí "bị hạn chế" trong vũ trụ của bạn nếu họ có thể tham gia vào một vị trí đơn lẻ. 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ó hiển thị hay đang được sử dụng hay không. Thêm vào đó, những 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.

Di chuyển khách hàng trong vũ trụ

Một khi đã ở trong một vũ trụ, khách hàng có thể di chuyển đến bất kỳ vị trí nào trong vũ trụ đó, có khả năng vượt qua bất kỳ hạn chế truy cập hoặc cổng tiến trình nào. Điều này cũng có thể dẫn đến việc rò rỉ nội dung chưa phát hành một cách không mong muốn, ví dụ như từ một trải nghiệm phát triển hoặc giai đoạn. 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 vị trí phụ trên trang web - nó không ngăn được việc di chuyển do khách hàng khởi xướng
  • Giả định rằng những kẻ khai thác sẽ phát hiện ra sự tồn tại của tất cả các vị trí phụ trong vũ trụ của bạn
  • Một khách hàng có thể di chuyển đến bất kỳ vị trí phụ nào nếu họ có thể truy cập vào một vị trí đơn lẻ, chẳng hạn như vị trí gốc, bất kể thiết kế quy trình mà bạn dự định

Nhiều nhà phát triển cố gắng ngăn chặn quyền truy cập bằng cách đá những người dùng không được phép khỏi một vị trí phụ. Điều này có thể hiệu quả trong việc chặn gameplay, nhưng nó không ngăn được 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 hiện.

Sử dụng di chuyển an toàn

Cách hiệu quả nhất để ngăn chặn quyền truy cập không được phép thông qua di chuyển là đặt Kiểm soát Truy cập cho Các Vị trí thành An toàn chỉ trong vũ trụ 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 vị trí không bắt đầu chỉ cho di chuyển được khởi xướng từ máy chủ, chặn việc di 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ị trí 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ải nghiệm hiện có đang sử dụng di chuyển do khách hàng khởi xướng, hãy xem Di chuyển giữa các vị trí.

Bảo vệ sâu cho các vị trí hạn chế

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

Sao chép

Sao chép mô tả cách trạng thái được truyền qua mạng giữa các thực thể 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 thực thể có quyền kiểm soát máy chủ, có nghĩa là để một thực thể đượ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 thực thể cũng có quyền kiểm soát máy chủ, nghĩa là hầu hết các thuộc tính phải được thay đổi trên máy chủ thì các thay đổi mới có thể hiển thị cho tất cả khách hàng.
  • Nói chung, một thực thể hoặc được sao chép đến tất 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 bộ chứa sao chép là các thực thể cấp cao (được gán dưới DataModel) mà sao chép đến khách hàng. Nếu một thực thể trở thành một con cháu của một bộ chứa 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ả khách hàng. Bạn có thể đọc thêm về các bộ chứa sao chép phổ biến trong Hướng dẫn mô hình dữ liệu. Khi nghi ngờ, bạn luôn có thể kiểm tra cách mà một thực thể 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ế độ kiểm tra trong Chế độ kiểm tra Studio.

Ý nghĩa bảo mật của sao chép

Bất kỳ nội dung nào được sao chép đến một khách hàng có thể bị khai thác và khai thác dữ liệu bởi một kẻ khai thác. Như một quy tắc chung, tránh công bố hoặc phát hành bất kỳ nội dung bí mật nào đến môi trường sản xuất trừ khi bạn đã sẵn sàng cho việc nó sẽ được nhìn thấy bởi người dùng. Ngay cả khi có logic rào cản việc phát hành hoặc truy cập nội dung trong trải nghiệm cho đến một ngày sau (hoặc một điều kiện nào đó khác), hãy giả định rằng nhữ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 thực thể nhạy cảm, bao gồm nhưng không giới hạn ở: kịch bả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 những 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. Kịch bản và ModuleScripts chỉ dành cho máy chủ 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ỉ máy chủ và mã chỉ khách trong cùng một kịch bản là không nên, vì logic phía máy chủ sẽ bị lộ khi 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 khuôn mẫu nên tránh
-- Giữ mã máy chủ trong các thực thể 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 phí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 phía máy chủ");
end
end
RemoteEvent.OnServerEvent:Connect(function(player: Player, p3) -- Dòng: 15
--[[
Giá trị trên:
[1] = table1
--]]
table1:DoServerThing(p3);
end);
return table1;
end
function table1.DoServerThing(_, p1) -- Dòng: 19
--[[
Giá trị trên:
[1] = RemoteEvent
--]]
RemoteEvent:FireServer(p1);
end
return table1;

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

Tác động của việc vi phạm tính bảo mật

Vi phạm tính bảo mật có thể có 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 các thông báo chính thức
  • Bất lợi cạnh tranh: Các 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 khai thác: Logic phía máy chủ lộ diện giúp những kẻ khai thác nhanh hơn và dễ dàng hơn để 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
©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.