2012-03-08 28 views
11

Mọi người đã nói rất nhiều từ tốt cho HTML5, nhưng một trong những mối quan tâm chính của tôi là làm thế nào để bảo vệ mã nguồn của trò chơi của tôi.Bảo vệ nguồn của trò chơi HTML5

yếu

..

  1. Làm thế nào để ngăn chặn khác từ việc sử dụng công cụ trò chơi phát triển riêng của chúng tôi (đó là một tài sản khổng lồ)
  2. Làm thế nào để ngăn chặn khác từ tải trò chơi và lưu trữ nó trong nền tảng khác
  3. Cách ẩn chi tiết cuộc gọi API máy chủ trong các nguồn, ví dụ: API bảng điểm của riêng chúng tôi, API tiền tệ ảo, v.v.
+1

Bạn đã có câu trả lời tất cả về cơ bản nói "Bạn không thể dừng điều này", nhưng lưu ý rằng chỉ áp dụng cho các thành phần _client-side_ của trò chơi của bạn. Các thành phần _server-side_ an toàn. Vì vậy, mọi người sẽ có thể xem các yêu cầu/phản hồi đến/từ API máy chủ của bạn, nhưng họ sẽ không thể xem cách API được triển khai trên máy chủ. – nnnnnn

+0

@nnnnnn, để hoàn toàn rõ ràng, bạn có thể nhận được rất nhiều thông tin từ các cuộc gọi API hoạt động như thế nào và nếu bạn thực sự muốn bạn có thể xây dựng trên đó. Một loạt các trò chơi trực tuyến (như WoW, vv) có các máy chủ không chính thức. Bạn có thể ẩn cài đặt chính xác nhưng không thể thực hiện chức năng. – zatatatata

+0

Nếu bạn sử dụng nút-WebKit nó sẽ biên dịch trò chơi của bạn thành một exe trong các cửa sổ. – zachdyer

Trả lời

11

"Bạn không thể" là câu trả lời cho tất cả 3 câu hỏi. Điều duy nhất bạn có thể làm là làm chậm bất cứ ai quan tâm đến mã của bạn bằng cách giải thích nó, nhưng cuối cùng, nếu ai đó muốn sử dụng mã của bạn, bạn không thể làm gì với nó.

2

Cuối cùng, không có sự bảo vệ tài sản trên web. Nếu bạn có thể nhìn thấy nó trong một trình duyệt, bạn có thể tải nó với curl. Nếu bảo vệ tài sản là một mối quan tâm lớn đối với bạn, tôi không khuyên bạn nên sử dụng HTML và JavaScript.

Bạn có thể làm xáo trộn mã của mình để ngăn chặn hành vi trộm cắp thông thường và sử dụng SSL để ngăn chặn việc rình mò, nhưng những người siêng năng vẫn có thể truy cập các tài sản này theo những cách khác.

+0

SSL sẽ không ngăn chặn việc rình mò. Proxy HTTP (như Fiddler2) sẽ cho phép bạn thiết lập một người ở giữa để nó có thể giải mã tất cả lưu lượng được gửi từ máy tính của bạn (thông qua proxy cục bộ) tới máy chủ. –

0

Giảm bớt mã js của bạn sẽ khiến việc sử dụng lại khó hơn nhiều, nhưng không phải là không thể

+0

Giảm bớt mã js của bạn sẽ khiến việc sử dụng lại mã js khó khăn hơn nhưng không thể thực hiện được bạn có thể làm cho js thích hợp hơn với công cụ chrome dev, vì vậy việc giảm thiểu chỉ cần thực hiện một màn hình – mpm

0

Không có cách nào để sao chép bảo vệ tệp kỹ thuật số. Nhiều ngành đã thử. Nhiều người đã thất bại. Đáng buồn thay, nhiều người sẽ tiếp tục cố gắng và tiếp tục thất bại, nhưng kinh doanh dường như gặp khó khăn khi học hỏi từ những sai lầm trong quá khứ của họ ở lần.

Tốt nhất để không tập trung quá nhiều vào điều đó. Tập trung vào khách hàng của bạn.

4

Bạn có thể chạy trò chơi trên PC màn hình cảm ứng trong tủ phần cứng an toàn (như tại sân bay) và không cho phép truy cập thông qua internet. Có lẽ không phải là câu trả lời lý tưởng mà bạn đang tìm kiếm.

+2

+1 để ở bên ngoài hộp –

+2

+1 cả hai bên trong một hộp và bên ngoài hộp – Tackle

7

cá nhân tôi sử dụng Google Closure Compiler với khả năng nén tiên tiến để xáo trộn mã của tôi (tải về Java tập tin, không sử dụng các phiên bản trực tuyến!). Phải mất một số nỗ lực để chuẩn bị mã nhưng tất cả đều rất tốt và một khi bạn hiểu cách trình biên dịch hoạt động, nó thực sự dễ dàng tuân thủ các quy tắc của nó. Nó không chỉ obfuscates mã của bạn, nhưng thực sự tối ưu hóa nó cho tốc độ thực thi và kích thước tập tin là tốt.

để rõ ràng - có những kẻ khác đúng, không bảo vệ tối hậu ... bla bla. NHƯNG: bao giờ cố gắng để làm cho người đứng đầu hoặc đuôi của googles JavaScript? Tôi đã cố gắng và thất bại. Nếu bạn sử dụng tên lớp bị xáo trộn và rất ít chuỗi trong mã của bạn, nó sẽ rất khó đọc, có nghĩa là nó có thể mất nhiều tháng tùy thuộc vào độ phức tạp của mã của bạn.

Đối với các cuộc gọi API, mọi thứ khác nhau. mã hóa sẽ không hoạt động vì mã giải mã sẽ hiển thị trong javascript - ngay cả với obfuscation rằng một phần sẽ khó ẩn vì mã AJAX luôn trông giống nhau ... Ngoài ra mã hóa sử dụng thời gian CPU mà bạn có thể cần ở nơi khác. Trì hoãn là một cách nhưng cuối cùng, các cuộc gọi API sẽ ít nhiều có thể đọc được.

7

Làm xáo trộn mã javascript của bạn có thể là một bước quan trọng. Obfuscation có thể làm cho mã phức tạp đến nỗi không có người lành mạnh nào cố gắng hack nó.

Tôi đã sử dụng jscrambler.com với kết quả tốt. Điều đó nói rằng, obfuscation sẽ không giải quyết mọi vấn đề. Người dùng sẽ vẫn có thể xem tất cả lưu lượng được trao đổi giữa trình duyệt và máy chủ. Vì vậy, họ sẽ biết cách API hoạt động và cách sử dụng nó.

Để tránh điều này, bạn có thể sử dụng mã hóa thư bằng javascript. Điều này có thể hữu ích trong việc đảm bảo nội dung. Tôi đã tìm thấy một bài đăng trên stackoverflow thảo luận về mã hóa bằng cách sử dụng javascript: Javascript AES encryption. Có một vài triển khai có thể được sử dụng có tác động hiệu suất thấp.

Cuối cùng nhưng không kém phần quan trọng, tất cả đầu vào phải được kiểm tra kỹ lưỡng ở phía máy chủ. Tất cả các logic có thể được thực hiện ở phía máy chủ nên vẫn còn đó.

Các vấn đề liên quan