Chiến lược bảo mật và giảm thiểu gian lận

*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.

Trước khi đi vào các chiến lược cụ thể để phát triển một cách an toàn và ngăn chặn gian lận, điều quan trọng là phải hiểu các nguyên tắc cơ bản của bảo mật Roblox. Một trải nghiệm an toàn được xây dựng dựa trên một tâm lý dự đoán hành vi thù địch. Trước khi viết một dòng mã, bạn phải ghi nhớ những nguyên tắc cơ bản này. Chúng nên thông báo cho mọi quyết định kiến trúc và thiết kế mà bạn đưa ra.

Không bao giờ tin tưởng vào client

Đây là nguyên tắc cơ bản. Một kẻ khai thác quyết tâm hoàn toàn kiểm soát trạng thái địa phương và lưu lượng mạng của họ. Bởi vì những kẻ khai thác có mức độ kiểm soát này, bất kỳ biện pháp bảo mật nào dựa vào việc thi hành ở phía client sẽ cuối cùng bị vượt qua. Đây không phải là một hạn chế của Roblox: nó là một thực tế cơ bản của kiến trúc client-server. Giả định rằng mọi mảnh dữ liệu được gửi từ client đều đã bị thao túng, tạo dựng hoặc gửi với ý định độc hại. Điều này bao gồm khả năng:

  • Giải nén bất kỳ LocalScript hoặc ModuleScript nào được nhân bản, ngay cả khi chúng chưa bao giờ chạy trên client
  • Chiếm quyền điều khiển mạng của nhân vật của mình và bất kỳ bộ phận nào không được neo
  • Kích hoạt các sự kiện do client khởi xướng như các sự kiện Touched hoặc kích hoạt ProximityPrompt ở bất kỳ khoảng cách hoặc tần suất nào
  • Chỉnh sửa vị trí, vật lý hoặc các tương tác của người chơi với thế giới
  • Kích hoạt hoặc gọi RemoteEvents và RemoteFunctions với bất kỳ tần suất nào với các tham số tùy ý (ngoại trừ tham số Player đầu tiên)
  • Thay đổi bất kỳ điều gì trong DataModel địa phương của họ mà không kích hoạt bất kỳ sự kiện mong đợi nào
  • Tùy ý thay đổi hành vi của bất kỳ mã nào đang chạy địa phương

Vì lý do này, tất cả logic quan trọng phải được xác thực ở phía server hoặc chạy độc quyền trên server. Những hậu quả của sự kiểm soát này được trình bày chi tiết trong Quyền sở hữu mạng, Xác thực chuyển động và Gian lận vật lýQuản lý truy cập và Bảo mật.

Quyền lực của server

Server phải là nguồn thông tin tối thượng cho tất cả các trạng thái mô phỏng, quy tắc, tiến trình của người chơi và các quyết định quan trọng. Vai trò của client là để hiển thị thế giới và gửi đầu vào người dùng đến server.

Vai trò của server là:

  • Nhận đầu vào từ client
  • Xác thực rằng hành động được yêu cầu là có thể và được phép
  • Thực hiện hành động và cập nhật trạng thái quyền lực của nó
  • Nhân bản kết quả đến tất cả các client có liên quan

Ví dụ, nếu một người chơi nói "Tôi muốn mua một chai Bloxy Cola", server phải biết giá trị thực sự của mặt hàng, số tiền của người chơi và khoảng cách vật lý của nhân vật người chơi từ cửa hàng trước khi xác thực và phê duyệt giao dịch. Nếu có thể, trạng thái cần xác thực nên được duy trì độc quyền bởi server và không phải bởi các client. Trong ví dụ, nếu giao dịch Bloxy Cola được phê duyệt, server sẽ trừ giá của Bloxy Cola từ số tiền của người chơi, tuy nhiên, server không thể luôn kiểm soát nhân vật của người chơi.

Bảo mật theo thiết kế

Tích hợp các cân nhắc về bảo mật vào thiết kế trải nghiệm của bạn ngay từ đầu, thay vì cố gắng bổ sung chúng sau này như một ý tưởng sau.

  • Mô hình mối đe dọa cho mọi tính năng mới. Đối với mỗi tính năng mới, hãy hỏi
    • Kẻ tấn công có thể khai thác điều này như thế nào nếu chúng có toàn quyền kiểm soát client của mình?
    • Nếu một client có thể gửi bất kỳ giá trị nào cho bất kỳ tham số nào được sử dụng trong tính năng, kết quả tồi tệ nhất có thể là gì?
    • Điều gì sẽ xảy ra nếu tính năng này được sử dụng hơn 1,000 lần mỗi giây? Tốc độ tối đa mà nó nên được sử dụng là gì?
    • Có phải một kẻ khai thác có thể sử dụng điều này để hủy hoại trải nghiệm của người chơi khác không?
    • Tính năng này có thể sử dụng bao nhiêu tài nguyên, trong trường hợp xấu nhất?
    • Thông tin hoặc trạng thái nội bộ tối thiểu nào mà tôi cần phải hé lộ cho tính năng này?
  • Phân chia trách nhiệm sớm. Giữ logic và dữ liệu trong ServerScriptService từ ngày đầu tiên. Không bao giờ đặt chúng vào các container được nhân bản như ReplicatedStorage hoặc Workspace.
©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.